与String相关的一些习题:求最大子串,子串出现次数,字符串反转等

import java.util.ArrayList;
import java.util.List;

/**
 * 
 * @author pomay
 *
 */
public class MyString
{
	// 模拟一个trim方法,去除字符串两端的空格
	public void Trim(String str)
	{

		int start = 0;
		int end = str.length() - 1;

		while (start < end && str.charAt(start) == ' ')
		{
			start++;
		}
		while (end > start && str.charAt(end) == ' ')
		{
			end--;
		}
		String s = str.substring(start, end + 1);// subString是左闭右开的,所以要写到end+1
		System.out.println(s);// 输出 abc d
	}

	// 将一个字符串进行反转,将字符串中指定部分进行反转,比如将"abcdefg"反转成"abfedcg"
	public void reverse(String str1, int start, int end)
	{
		char[] c = str1.toCharArray();
		for (int i = start, j = end; i < j; i++, j--)
		{
			char temp = c[i];
			c[i] = c[j];
			c[j] = temp;
		}
		String s = new String(c);// 字符数组转字符串
		System.out.println(s);// 输出 abfedcg
	}

	// 获取一个字符串在另一个字符串中出现的次数,判断str3在str2出现的次数,比如获取"ab"在"abkkcadkabkebfkabkskab"中出现的次数
	public void getTime(String str2, String str3)
	{
		int count = 0;
		while (str2.indexOf(str3) != -1)// 当str2第一次出现了str3的位置
		{
			count++;
			str2 = str2.substring(str2.indexOf(str3) + str3.length());// 截取后面的字符串
		}
		System.out.println(count);
	}

	// 获取两个字符串中最大相同子串,比如str4="abcwerthelloyuiodef",str5="cvhellobnm"
	// 提示:将短的那个串进行长度依次递减的子串与较长的串比较
	public void getMaxSubString(String str4, String str5)
	{
		List<String> lists = new ArrayList<String>();
		String maxStr = (str4.length() >= str5.length()) ? str4 : str5;
		String minStr = (str4.length() >= str5.length()) ? str5 : str4;
		int len = minStr.length();
		int maxLength = 0;
		for (int i = 0; i < len; i++)// 将短的那个串进行长度依次递减
		{
			for (int x = 0, y = len - i; y <= len; x++, y++)// 整体往后移
			{
				String str = minStr.substring(x, y);
				// System.out.println("str=" + str + ":x=" + x + "y=" + y);
				if (maxStr.contains(str) && str.length() >= maxLength)
				{
					maxLength = str.length();
					lists.add(str);
				}
			}

		}
		if (lists == null || lists.size() <= 0)
		{
			System.out.println(0);
		} else
			System.out.println(lists);
	}

	// 对字符串中字符进行自然顺序排序:选择,冒泡,Arras.sort()等
	public void Sort(String str6)
	{
		char[] c = str6.toCharArray();
		for (int i = 1; i < c.length; i++)
		{
			for (int j = c.length - 1; j >= i; j--)
			{
				if (c[j] < c[j - 1])
				{
					char temp = c[j];
					c[j] = c[j - 1];
					c[j - 1] = temp;
				}
			}
		}
		System.out.println(new String(c));// 将数组变成字符串输出
	}

	// 将I am a student!输出!student a am I
	public void Split(String str7)
	{
		String str = str7.substring(0, str7.length() - 1);
		String[] s = str.split(" ");

		for (int i = 0, j = s.length - 1; i <= j; i++, j--)
		{
			String temp = s[i];
			s[i] = s[j];
			s[j] = temp;
		}
		// System.out.println(s[0]);
		String c = String.valueOf(str7.charAt(str7.length() - 1)) + s[0];
		for (int i = 1; i < s.length; i++)
		{
			c += " " + s[i];
		}

		System.out.println(c);
	}

	public static void main(String[] args)
	{

		MyString myString = new MyString();
		String str = new String(" abc d ");
		myString.Trim(str);// 模拟一个trim方法,去除字符串两端的空格
		String str1 = new String("abcdefg");
		myString.reverse(str1, 2, 5);//
		// 将一个字符串进行反转,将字符串中指定部分进行反转,比如将"abcdefg"反转成"abfedcg"
		String str2 = new String("abkkcadkabkebfkabkskab");
		String str3 = new String("ab");
		myString.getTime(str2, str3);//
		// 比如获取"ab"在"abkkcadkabkebfkabkskab"中出现的次数4
		String str4 = new String("pomayisbeautiful");
		String str5 = new String("pomaytiful");
		myString.getMaxSubString(str4, str5);// [pomay, tiful]
		String str6 = new String("gkbdpoancmehfilj");
		myString.Sort(str6);// abcdefghijklmnop
		String str7 = new String("I am a student!");
		myString.Split(str7);// !student a am I
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值