关于String的几个小练习

#日常练习
1,模拟一个trim方法,去除字符串两端的空格。

package String;

/*
 * 
1,模拟一个trim方法,去除字符串两端的空格。
	思路:
	1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。
		结尾处判断空格也是如此。
	2,当开始和结尾都判断到不是空格时,就是要获取的字符串。

*
*/

public class String_test01 {

	public static void main(String[] args) {
		String s1 = "       ab  fg      ";
		String_tools.sop("原字符串:",s1);
		String_tools.sop("去除空格:",String_tools.myTrim(s1));

	}

}

2,将一个字符串进行反转。将字符串中指定部分进行反转。

package String;
/*
 * 2,将一个字符串进行反转。将字符串中指定部分进行反转,"abcdefg";abfedcg
	思路:
	1,曾经学习过对数组的元素进行反转。
	2,将字符串变成数组,对数组反转。
	3,将反转后的数组变成字符串。
	4,只要将或反转的部分的开始和结束位置作为参数传递即可。
 * 
 * */

public class String_test02 {

	public static void main(String[] args) {
		String s1 = "abcdefg";

		String_tools.sop("原字符串:",s1);
		String_tools.sop("整体翻转:",String_tools.reverseString(s1));
		String_tools.sop("局部翻转:",String_tools.reverseString(s1,2,5));
	}


}

3,获取一个字符串在另一个字符串中出现的次数。
package String;

/*
3,获取一个字符串在另一个字符串中出现的次数。
	"abkkcdkkefkkskk"
	
	思路:
	1,定义个计数器。
	2,获取kk第一次出现的位置。
	3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置。
		每获取一次就计数一次。
	4,当获取不到时,计数完成。

*/

public class String_test03 {

	public static void main(String[] args) {
		String s1 = "abkkcdkkefkkskk";
		String key = "kk";
		String_tools.sop(s1+"串上有"+String_tools.getSubCount(s1,key)+"个"+key,"");

	}

}
4,获取两个字符串中最大相同子串。

package String;
/*
4,获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。
	"abcwerthelloyuiodef"
	"cvhellobnm"
	思路:
		1,将短的那个子串按照长度递减的方式获取到。
		2,将每获取到的子串去长串中判断是否包含,
			如果包含,已经找到!。
*/


public class String_test04 {

	public static void main(String[] args) {
		String s1 = "abcwerthelloyuiodef";
		String s2 = "cvhellobnm";
		String_tools.sop("最大重复子串:",String_tools.getMaxSubString(s1,s2));

	}

}

以上代码需要用到的其他方法:
package String;


public class String_tools{
	//公共方法
	public static void sop(String s , Object obj) {
		System.out.println(s + obj);
	}
/*******************************************************************************/
	//练习4
	public static String getMaxSubString(String s1,String s2) {
		String longString = "";
		String shortString = "";
		longString = (s1.length()>s2.length())?s1:s2;
		shortString = (s1.length()<s2.length())?s1:s2;
		
		for(int x = 0;x <shortString.length();x++) {
			for(int y = 0,z = shortString.length()-x;z != shortString.length()+1;y++,z++) {
				String temp = shortString.substring(y, z);
				if(longString.contains(temp)) {
					return temp;
				}
			}
		}
		
		
		return "";
	}
	
	
/*******************************************************************************/
	 //练习3
	 public static int getSubCount(String s1,String key)
	 {
		 int count = 0;
		 int index = 0;
		 //找到时.index返回角标,更新index值,并+上目标串的长度用于定位到找到位置的后面,没找到时结束。
		 for(;(index = s1.indexOf(key,index)) != -1;index = index + key.length()) {
			count++; 
		 }
		 
		 return count;
	 }
/*******************************************************************************/
	 //练习2
	//指定位置翻转
	 public static String reverseString(String str , int star , int end) {
		 char [] arr = str.toCharArray();
		 reverseCharArray(arr,star,end);
		 return (new String(arr));
		 
	 }
	 //整体翻转
	 public static String reverseString(String str) {
		 char [] arr = str.toCharArray();
		 reverseCharArray(arr,0,arr.length-1);
		 return (new String(arr));
	
	 }
	 public static void reverseCharArray(char[] arr , int star , int end) {
		 for(;star < end;star++,end--) {
			 char temp = arr[star];
			 arr[star] = arr[end];
			 arr[end] = temp;
		 }

		 
	 }
/*******************************************************************************/
	//练习1 
	public static String myTrim(String str) {
		int star = 0 ;
		int end = str.length()-1;
		while(star <= end && str.charAt(star) == ' ') {
			star++;
		}
		while(star <= end && str.charAt(end) == ' ') {
			end--;
		}
		return (str.substring(star, end+1));
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值