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
}
}
与String相关的一些习题:求最大子串,子串出现次数,字符串反转等
最新推荐文章于 2022-10-11 00:05:49 发布