Day024 常见字符串算法题
2021/5/24 22:54:51
本文主要是介绍Day024 常见字符串算法题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
常见算法题目
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)***
这篇关于Day024 常见字符串算法题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-28一步到位:购买适合 SEO 的域名全攻略
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门