import org.junit.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
- @author Pstart
- @create 2019-11-08 20:50
*/
public class TestTrim {
String s1 = " ajjjjjj123 ";//带空格字符串
String s2 = "";//不带空格字符串
/*
* 模拟trim()去掉带空格字符串
* */
@Test
public void test() {
char[] chars = s1.toCharArray();
for (char c : chars) {
if (c != ' ') {
s2 += c;
}
}
System.out.println("字符串trim后" + s2);
}
/*
* 获取字符串中最长的子字符串
* */
String str1 = "abcwenmrthelloyuiloodefccc";//字符串
String str2 = "cchelbnmyuiloefccc";//子字符串 18位
List<String> list;//存放str2所有可能的字符串情况
List<Integer> listLengths;//存放str2所有可能的字符串情况的长度
String[] strs = new String[str2.length()];// 存放字符每次从第一位递减的字符串
String[] strsReverse = new String[str2.length()];// 存放字符串反转后的元素
// 存放反转后临时字符串,每次递减一位的字符串,18个字符串,得到每个元素从末尾递减的每个元素
String strReverseTemp1;
// 对上面18个字符串再处理reverse回正向字符串
String strReverseTemp2;
@Test
public void test1() {
list = new ArrayList();
listLengths = new ArrayList();
for (int j = 0; j < str2.length(); j++) {
strs[j] = str2.substring(j);
StringBuilder stringBuilder = new StringBuilder(strs[j]);
StringBuilder reverse = stringBuilder.reverse();
strReverseTemp1 = reverse + "";
strsReverse[j] = strReverseTemp1;
for (int i = 0; i < strsReverse[j].length(); i++) {// 对反转元素从第一位递减后再反转得到原正向字符串
StringBuilder sb1 = new StringBuilder(strsReverse[j].substring(i));
StringBuilder reverse1 = sb1.reverse();
strReverseTemp2 = reverse1 + "";
if (str1.contains(strReverseTemp2)) {// 遍历元素存入集合
list.add(strReverseTemp2);//存入str1主字符串所有包含str2的情况
}
}
}
for (int i = 0; i < list.size(); i++) {
int x = list.get(i).toString().length();//获取str1主字符串所有包含str2的情况的str2的长度
listLengths.add(x);// 存放长度,下一步遍历字符串长度与最大长度比较
}
for (int i = 0; i < list.size(); i++) {
if ((Object) list.get(i).toString().length() == Collections.max(listLengths)) {// 比较
System.out.println("最长的字符串为:"+list.get(i));
}
}
}
}