javaSE 字符串 练习题
2019-06-01 18:11
399 查看
1、给定一个由数字组成的字符串,统计出每个数字出现的次数
方法一:
[code] String string = "12524983436574843487535793"; int[] c = new int[10]; for (int i = 0; i < string.length(); i++){ char c1 = string.charAt(i); //48-57 int a = c1-48; // 类型转换 char 类型的1 转化成int值为49 c[a]++; } for (int i = 0; i < c.length; i++){ System.out.println(i+" 出现的次数: "+c[i]); }
方法二: 原理是一样的
[code] String string = "12524983436574843487535793"; char arr[] = string.toCharArray(); int arr1[] = new int[10]; for(int i=0;i<arr.length;i++) { int a=(int)arr[i]; int j=a-48; arr1[j]++; } for(int i=0;i<arr1.length;i++) { System.out.println(String.format("%s出现的次数:%d",i,arr1[i])); }
2、 统计一个字符串中数字和字母的个数
[code] String str = "122345ht3jsu8dkd7ldfdk5~=-09';"; int number=0; int letter=0; int other = 0; for(int i = 0; i < str.length(); i++) { char c = str.charAt(i); int a = 0+c;//a~z 97~122 A~Z 65~90 if( a >= 97 && a <= 122 || a >= 65 && a <= 90 ) { letter ++ ; }else if ( a >= 48 && a <= 57 ) {//char 1~9 int 48~57 number ++ ; }else {//其他字符 other ++ ; } } System.out.println(String.format("数字个数:%s",number)); System.out.println(String.format("字母个数:%s",letter)); System.out.println(String.format("其他字符:%s",other));
3、给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置和出现次数
[code] /**第一种做法:indexOf的妙用*/ String str = "ruydoruyfhlfiruyokngredcxruy"; String str1="ruy"; int stat = 0; int count0=0; while (true){ int i = str.indexOf(str1,stat);//不存在返回-1 if (i==-1){ break; } count0++; System.out.println(String.format("第%s次的位置:%s",count0,i)); stat = i+str1.length(); } System.out.println(String.format("共出现%d次", count0)); /** 第二种做法:(利用StringBuffer或StringBuilder 的append()方法及charAt()方法) */ str = "ruydoruyfhlfiruyokngredcxruy"; str1="ruy"; StringBuffer buf = new StringBuffer(); int count=0; for(int i=0;i<str.length();i++) { buf.append(str.charAt(i)); if(buf.toString().contains(str1)) { count++; buf.delete(0,buf.length()); System.out.println(String.format("第%s次的位置:%s",count,(i-str1.length()+1))); } } System.out.println(String.format("共出现了%s次",count)); /**第三种做法 :(本质上与第二中一样)(体会下String与char之间的关系)*/ str = "ruydoruyfhlfiruyokngredcxruy"; str1="ruy"; StringBuffer buf1 = new StringBuffer(); char[] cArr = str.toCharArray(); int count2=0; for(int i=0;i<cArr.length;i++) { buf1.append(cArr[i]); if(buf1.toString().contains(str1)) { count2++; buf1.delete(0, buf1.length()); System.out.println(String.format("第%s次的位置:%s",count2,(i-str1.length()+1))); } } System.out.println(String.format("共出现了%s次",count2));
4、给定一个长度,随机产生一个该长度的字符串,由大写,小写字母以及数字组成
[code] int num=5; char[] c = new char[5]; Random r = new Random(); for(int i=0;i<5;i++) { int m = r.nextInt(62);//9个数字,26个大写,26个小写 51个数字,不包含62 if(m>=0&&m<=25) {//小写字母26个 m+=65;//0=>65,1=>66 }else if(m>=26&&m<=51) {//26个大写 97-26=71 m+=71; }else {//9个数字 52-61 m-=4;//char 0=>int 48 char1=>int 49 } c[i]=(char)m; } System.out.println(c);
5、获取两个字符串中最大相同子串(可能多个)。比如: str1 = "abcwerthelloyuiodef“;str2 = "cvhellobnm"
[code]public void max() { String str1 = "abcwerthelloyuiodef"; String str2 = "ccwertvhellobnmiodef"; String s3 = ""; String s4 = ""; List<String> list = new LinkedList<>(); for(int i=0; i < str2.length(); i++) { char s5 = str2.charAt(i); s3+=s5; if(str1.contains(s3)) { if(s3.length() > s4.length()) { s4=s3; list.clear(); list.add(s4); }else if(s3.length() == s4.length()) { list.add(s3); } if(i<str2.length()-1) { if(!str1.contains(s3 + str2.charAt(i+1))) { s3=""; } } }else { s3=""; } } System.out.println("最大:"+list); }
6.获取一个字符串在另一个字符串中出现的次数。 比如:获取“ ab”在 “abkkcadkabkebfkabkskab” 中出现的次数
解法一:
[code]public void times() { String s = "abkkcadkabkebfkabkskab"; String s0 = "ab"; int m=0; while(s.indexOf(s0)!=-1) { s=s.substring(s.indexOf(s0)+s0.length()); m++; } System.out.println("次数:"+m); }
解法二:
[code] public void times() { String s = "abkkcadkabkebfkabkskab"; String s1=""; int m=0; for(int i=0;i<s.length();i++) { s1+=s.charAt(i); if(s1.contains("ab")) { m++; s1=""; } } System. 4000 out.println("次数:"+m); }
相关文章推荐
- Visual C++ 2008入门经典 第四章数组 字符串(练习题)
- 字符串练习题一
- javaSE-基础篇-如何获得中文英文混合字符串的字节长度
- 字符串练习题:SPOJ 220 Relevant Phrases of Annihilation(后缀数组加二分)
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合(二)
- javaSE集合与泛型练习题
- 【华为练习题 】 字符串的最小周期(中级)
- 字符串练习题
- 【练习题】读取一个字符串,计算每个字母出现的个数
- python编程练习-字符串移位练习题
- 【练习题】编写一个函数,把一个char组成的字符串循环右移n位
- 蓝桥杯练习题 字符串全排列 题解
- 字符串练习题: 【HDU 2457】 DNA repair(AC自动机+DP)
- java编程---3.1 (关于String的练习题) 将字符串中的字符按需求等分,例如:把aqzxswerdcvfr变成AQZX-SWER-DCVF-R
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合
- [华为机试练习题]43.在字符串中找出连续最长的数字串
- [javase]字符串拼接
- java练习题——字符串
- java学习之路 之 Java常用类-字符串(String)类及练习题
- 【华为OJ平台练习题】统计一段字符串中含有空格、英文、数字的个数