黑马程序员——String(字符串练习)


-----------android培训java培训、java学习型技术博客、期待与您交流!------------

/*

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

public static String Mytrim(String str)
	{
		int star = -1;
		int end = -1;
		String outstr ;
		if(str.isEmpty())
			throw new RuntimeException();
		for(int i = 0; i<str.length();i++)
			if(str.charAt(i)!=' ')
			{
				star = i;
				break;
			}
		for(int i = str.length()-1; i>0;i--)
			if(str.charAt(i)!=' ')
			{
				end = i;
				break;
			}
		outstr = str.substring(star, end+1);
		return outstr;
	}

优化代码:

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


练习二:
// 将一个字符串进行反转。将字符串中指定部分进行反转,“abcdefg”;abfedcg
//1、将字符串变成数组,对数组反转。
//2、将反转后的数组变成字符串。
//3、只要将反转部分的开始和结束位置作为参数传递即可。
public static String myreverse(String str,int start,int end)
	{        end--;//包含头不包含尾。
		if(start>end)
			throw new RuntimeException();
		
		char[] chs = str.toCharArray();
		
		char temp ;
		
		while(start<end)
		{
			temp = chs[start];
			chs[start] = chs[end];
			chs[end] = temp;
			end--;
			start++;
		}
		return new String(chs);
	}

练习三:

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

	public static int myStringCount(String str,String Otherstr)
	{
		int count = 0;
		int fromIndex = str.indexOf(Otherstr, 0);
		while(fromIndex!=-1)
		{
			count++;
			fromIndex = str.indexOf(Otherstr, fromIndex+1);
		}
		return count;
	}


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

public static String TheMaxString(String str1,String str2)
	{
		String MaxLengthstr ;;
		String MinLengthstr ;;
		if(str1.length()>=str2.length())
		{
			MaxLengthstr = str1;
			MinLengthstr = str2;
		}
		else
		{
			MaxLengthstr = str2;
			MinLengthstr = str1;
		}
		String temp;
		int beginIndex;
		int endIndex;
		int length = MinLengthstr.length();
		while(length>0)
		{
			beginIndex = 0;
			endIndex = beginIndex+length;
			do
			{
				temp = MinLengthstr.substring(beginIndex, endIndex);
				
				if(MaxLengthstr.contains(temp))
					return temp;
				
				beginIndex++;
				endIndex++;
			}
			while(endIndex<MinLengthstr.length());
			
			length--;
		}
		return "";
	}

----------- android 培训 java培训 、java学习型技术博客、期待与您交流!------------





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值