字符串——String 练习
来源:互联网 发布:淘宝评价显示多长时间 编辑:程序博客网 时间:2024/06/05 03:41
练习一:模拟trim()方法
public class Test { public static void main(String[] args){ String str = " asdfa "; String str2 = myTrim(str); System.out.println("<"+str+">"); System.out.println("<"+str2+">"); } public static String myTrim(String str){ int start = 0; //字符串的前角标 int end = str.length()-1; //字符串的后角标 /*先进行角标判断(start不能超过end);再进行字符串中角标为start的字符是否为' ' *如果为空格,则start的角标向后一步,知道start角标的字符部位空格,start角标自加停止 * */ while(start <= end && str.charAt(start) == ' '){ start++; } /*先进行角标判断(start不能超过end);再进行字符串中角标为end的字符是否为' ' *如果为空格,则end的角标向前一步,知道start角标的字符部位空格,start角标自减停止 * */ while(start <= end && str.charAt(end) == ' '){ end--; } /*将字符串中角标为start与end之间的子串截取出来,注意包含头,不会包含尾,end要加1*/ return str.substring(start,end+1); }}
练习二:将字符串反转
public class Test { public static void main(String[] args){ String str = " ad cb "; System.out.println(str); System.out.println(reverseString(str)); } public static String reverseString(String str){ /*将字符串转换为字符数组*/ char arr[] = str.toCharArray(); /*将字符数组前后调换*/ reverse(arr); /*将字符数组转化为字符串*/ return new String(arr); } public static void reverse(char[] arr){ for(int start = 0,end = arr.length-1;start<end;start++,end--){ swap(arr,start,end); } } public static void swap(char[] arr,int x,int y){ /*数组为引用数据类型,所以只需相互交换,不需要返回就可以实现,其实在对内存中数组已经相互交换了*/ char temp; temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; }}
现在增加一个需求:实现字符串中指定角标的互换。
public class Test { public static void main(String[] args){ String str = " ad cb "; System.out.println(str); System.out.println(reverseString(str)); } public static String reverseString(String str,int start,int end){ /*将字符串转换为字符数组*/ char arr[] = str.toCharArray(); /*将字符数组前后调换*/ reverse(arr,start,end); /*将字符数组转化为字符串*/ return new String(arr); } public static String reverseString(String str){ return reverseString(str,0,str.length()); } public static void reverse(char[] arr,int x,int y){ for(int start = x,end = y-1;start<end;start++,end--){ swap(arr,start,end); } } public static void swap(char[] arr,int x,int y){ /*数组为引用数据类型,所以只需相互交换,不需要返回就可以实现,其实在对内存中数组已经相互交换了*/ char temp; temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; }}
练习三:获取一个字符串在另一个字符串中出现的次数
public class Test { public static void main(String[] args){ String str = "asdkkadsfasdkkadsfkksdfktk"; System.out.println(getSubCount(str,"kk")); } public static int getSubCount(String str,String key){ int index = 0; int count = 0; while((index=str.indexOf(key, index)) != -1){ System.out.println("index= "+index); index = index + key.length(); count++; } return count; }}
练习四:获取两个字符串中相同的最大字符串
首先:要对长度较短的字符串进行长度依次递减的子串打印
public class Test { public static void main(String[] args){ String s1 = "asfhellosdfa"; String s2 = "whellow"; System.out.println(getMaxSubString(s1,s2)); } public static String getMaxSubString(String s1,String s2){ String temp; String max = "",min = ""; max = (s1.length()>s2.length())?s1:s2; min = (max == s1)?s2:s1; for(int sublength = 0;sublength < min.length();sublength++){ for(int start = 0,end = min.length()-sublength;end < min.length()+1;start++,end++){ temp = min.substring(start,end);// System.out.println(temp); if(max.contains(temp)) return temp; } } return ""; }}
注意:大圈套小圈原理中,最外层的递增是:整个字符串要减去的字符串的长度(第一轮要减去0个,得到一个子串,然后对这一个子串进行判断;第二轮要减去一个,得到两个子串,然后对这两个子串进行判断;第三轮要减去两个,得到三个子串,然后对这三个子串分别进行判断、、、、、、)
0 0
- 字符串——String 练习
- 黑马程序员——String(字符串练习)
- 黑马程序员-String字符串练习
- HDU 5414 CRB and String(字符串处理)——多校练习10
- Java——String练习1:将一个字符串"abcd_itcast"按照长度由长到短打印出来
- python—字符串string
- 16周—字符串练习
- 黑马程序员—字符串练习
- 简单练习—字符串反转
- 字符串查找—练习一
- 编码练习——Java-String-API-练习
- 编码练习——Java-String-API-练习
- 练习6:字符串(string)和文本
- String类——练习(1)
- String类——练习(2)
- String类——练习(3)
- String类——练习(4)
- JAVA——字符串String
- C2第六次作业解题报告
- 《新闻》之笔记四
- 11gR203RAConHP Install
- c中关键字static的具体作用是什么
- 360手机卫士:测试类的优化
- 字符串——String 练习
- Linux一键安装web环境全攻略(阿里云服务器)
- 保龄球得分
- 设计模式(十二)之Template
- 对300万一张表数据,用游标进行循环,不同写法的效率比较
- 软件架构之一 -------CORBA
- 在同一台服务器上配置多个Tomcat
- Java 截取反斜杠--java使用split拆分特殊字符
- 推荐eclipse插件Properties Editor