常见算法题目
1.模拟一个trim方法,去除字符串两端的空格。
//1.模拟一个trim方法,去除字符串两端的空格。
public class Test1 {
public static void main(String[] args) {
String str1=" has a dog ";
String str2=mytrim(str1);
System.out.println("*********"+str2+"*******");
}
public static String mytrim(String str){
if(str==null||str.equals("")){
return "";
}
int startIndex=0;
int endIndex=str.length();
char[] strCharArray=str.toCharArray();
for(int i=0;i<strCharArray.length;i++){
if(!Character.isSpaceChar(strCharArray[i])){
startIndex=i;
break;
}
if(i==strCharArray.length-1){
return "";
}
}
for(int j=strCharArray.length-1;j>=0;j--){
if(!Character.isSpaceChar(strCharArray[j])){
endIndex=j+1;
break;
}
}
return str.substring(startIndex,endIndex);
}
}
输出结果:
*********has a dog*******
2.将一个字符串进行反转。将字符串指定部分进行反转。
比如“abcdefg”反转为“abfedcg”。
/*
2.将一个字符串进行反转。将字符串指定部分进行反转。
比如“abcdefg”反转为“abfedcg”。
*/
public class Test2 {
public static void main(String[] args) {
String str1 = new String("abcdefg");
String str2=reverse(str1,2,5);
System.out.println(str2);
}
public static String reverse(String str, int startIndex, int endIndex) {
if (str == null || str.equals("")) {
return "";
}
char[] strArr = str.toCharArray();
if (startIndex > str.length() || startIndex < 0 || endIndex < startIndex || endIndex > str.length()) {
return "索引有误";
}
for (int i = startIndex, j = endIndex-1; i < j; i++, j--) {
char tmp = strArr[i];
strArr[i] = strArr[j];
strArr[j] = tmp;
}
return new String(strArr);
}
}
输出结果:
abedcfg
3.获取一个字符串在另一个字符串中出现的次数。
比如:获取“ab”在abkkcadkabkebkabkskab“中出现的次数。
/*
3.获取一个字符串在另一个字符串中出现的次数。
比如:获取“ab”在abkkcadkabkebkabkskab“中出现的次数。
*/
public class Test3 {
public static void main(String[] args) {
String str1="abkkcadkabkebkabkskab";
int count=getCount(str1,"ab");
System.out.println(count);
}
public static int getCount(String str1,String str2){
int count=0;
if(str2.length()>str1.length()){
return -1;
}
for (int i = 0; i <=(str1.length()-str2.length()) ; i++) {
if(str1.startsWith(str2,i)){
count++;
}
}
return count;
}
}
输出结果
4
4.获取两个字符串中最大的相同子串。
比如:str1=“abcwertthelloyuiodef”;str2=“cvhellobnm”
提示:将短的那个串进行长度依次递减的子串与较长的串比较。
/*
4.获取两个字符串中最大的相同子串。
比如:str1=“abcwertthelloyuiodefabcde”;str2=“cvhellobnmabcde”
提示:将短的那个串进行长度依次递减的子串与较长的串比较。
*/
public class Test4 {
public static void main(String[] args) {
String str1="abcwertthelloyuiodefabcde";
String str2="cvhellobnmabcde";
String[] sameArr=findSameStr(str1,str2);
System.out.println(Arrays.toString(sameArr));
}
public static String[] findSameStr(String maxStr,String minStr){
if(maxStr.length()<minStr.length()){
String temp=minStr;
minStr=maxStr;
maxStr=temp;
}
StringBuilder sameStr=new StringBuilder();
for (int i=minStr.length();i>0;i--){
for(int j=0;j+i<=minStr.length();j++){
String sub=minStr.substring(j,j+i);
if(maxStr.contains(sub)){
sameStr.append(sub+",");
}
}
if(sameStr.length()!=0){
break;
}
}
return sameStr.toString().split(",");
}
}
输出结果
[hello, abcde]
5.对字符串中字符进行自然顺序排序。
提示:
-
字符串变成字符数组。
-
对数组排序,选择,冒泡,Arrays.sort();
-
将排序后的数组变成字符串。
public class Test5 {
public static void main(String[] args) {
String str1="fdafsadaka234kak1";
String str2=sortString(str1);
System.out.println(str2);
}
public static String sortString(String str){
char[] strArr=str.toCharArray();
Arrays.sort(strArr);
return new String(strArr);
}
}
输出结果
1234aaaaaddffkkks
](https://www.bilibili.com/video/BV1Kb411W75N?p=477&spm_id_from=pageDriver)***