Q1:获取两个字符串的最大相同子串
public class StringTest_1 {
public static void main(String[] args) {
/*
* 获取两个字符串的最大相同子串。
* 思路:
* 1,先明确两个字符串的长短,在长串中判断短串是否存在。
* 2,存在,则说明短串就是最打得相同子串
* 不存在,就将短串按照长度递减的方式,获取短串中的子串并到长串中判断。
* 3,一旦存在,便结束查找。
*/
String s1="dajsashdasuditcastddd";
String s2="dsadsffitcastdfdfh";
String maxSubString=getMaxSubstring(s1,s2);
System.out.println("maxSubString:"+maxSubString);
}
private static String getMaxSubstring(String s1, String s2) {
String max,min;
//明确哪个是长串哪个是短串。
max=(s1.length()>s2.length())?s1:s2;
min=max.equals(s1)?s2:s1;
for (int i = 0; i < min.length(); i++) {
for (int start = 0,end=min.length()-i; end <=min.length(); start++,end++) {
String temp=min.substring(start, end);
if(max.contains(temp)){
return temp;
}
}
}
return null;
}
}
Q2:对字符串中字符进行自然顺序排序
如”sdfjewqac”—->”acdefjqsw”
public class StringTest_2 {
public static void main(String[] args) {
/*
* 对字符串中字符进行自然顺序排序
* "sdfjewqac"---->"acdefjqsw"
* 思路:
* 1,把字符串转成数组
* 2,对数组进行排序
* 3,把数组转成字符串
*/
String s="sdfjewqac";
System.out.println(s);
String s1=sortStringByChar(s);
System.out.println(s1);
}
public static String sortStringByChar(String str) {
// 1,将字符串转成数组,转成字符数组
// char[] chs=str.toCharArray();
char[] chs=getArray(str);
//2,对数据进行排序
/*for (int i = 0; i < chs.length; i++) {
for (int j = 0; j < chs.length-i-1; j++) {
if(chs[j]>chs[j+1]){
char temp=chs[j];
chs[j]=chs[j+1];
chs[j+1]=temp;
}
}
}*///冒泡排序
sort(chs);
//3,对排好序的数据转成字符串
return new String(chs);
}
private static void sort(char[] chs) {
Arrays.sort(chs);
}
private static char[] getArray(String str) {
return str.toCharArray();
}
}
Q3:String类的trim()的介绍及代码实现
public class StringTest_3 {
public static void main(String[] args) {
/*
* String类的trim().
* 1,写代码演示该方法的使用。
* 2,trim什么时候使用?用户名,文本框输入,获取用户文本时。
* 3,模拟一下和trim功能一样的函数,参阅源码。
*/
String str=" chenshuang ";
String s2=str.trim();
String s1=myTrim(str);
System.out.println(s1);
}
/*
* 模拟trim功能。
*/
public static String myTrim(String str){
//1,定义两个变量,一个记录头的位置,一个记录尾的位置
int start=0;
int end=str.length()-1;
//2,移动截取的首尾角标
while(start<end&&str.charAt(start)==' '){
start++;
}
while(start<end&&str.charAt(end)==' '){
end--;
}
return str.substring(start, end+1);
}
}
源码实现:
public String trim() {
int len = value.length;
int st = 0;
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[st] <= ' ')) {
st++;
}
while ((st < len) && (val[len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
}
1302

被折叠的 条评论
为什么被折叠?



