String相关的常见算法题目

String相关的常见算法题目,第1张

String相关的常见算法题目 1.模拟一个trim方法,去除字符串两端的空格。
public class TrimTest {
    public static void main(String[] args) {
        String s1="  a bc   ";
        int start=0;
        int end=s1.length()-1;
        if(s1!=null){
            while(start 
2.将一个字符串进行反转。将字符串中指定部分进行反转。比如abcdefg反转为abfedcg。 
实现方式一:转换为char[] 
public class ReverseTest {
    public static void main(String[] args) {
        String s="abcdefg";
        int start=2;
        int end=s.length()-1;
        ReverseTest test=new ReverseTest();
        String reverse = test.reverse(s, start, end);
        System.out.println(s);
        System.out.println(reverse);
    }
    public String reverse(String s,int start,int end){
      if(s!=null){
          char[] chars = s.toCharArray();
          for(int i=start,j=end;i 
实现方式二: 使用String的拼接 
    //使用String的拼接
    public String reverse2(String s,int start,int end){
        if(s!=null){
            //第1部分
            String reverseStr = s.substring(0, start);
            //第2部分
            for(int i=end;i>=start;i--){
                reverseStr+=s.charAt(i);
            }
            //第3部分
            reverseStr+=s.substring(end+1);
            return reverseStr;
        }
        return null;
    }
    @Test
    public void test1(){
        String s="abcdefg";
        String s1 = reverse2(s, 2, 5);
        System.out.println(s1);
    }
 实现方式三: 使用StringBuffer/StringBuilder替换String
  //方式三:使用StringBuffer/StringBuilder替换String
    public String reverse3(String s,int start,int end){
        if(s!=null){
            StringBuilder builder = new StringBuilder(s.length());
            //第1部分
            builder.append(s.substring(0,start));
            //第2部分
            for(int i=end;i>=start;i--){
                builder.append(s.charAt(i));
            }
            //第3部分
            builder.append(s.substring(end+1));
            return builder.toString();
        }
        return null;
    }
    @Test
    public void test2(){
        String s="abcdefg";
        String s1 = reverse3(s, 2, 5);
        System.out.println(s1);
    }
3.获取一个字符串在另一个字符串中出现的次数。比如:获取"ab" 在 "abkkcadkabkebfkabkskab " 中出现的次数
public class GetCountTest {

    public int GetCount(String mainStr,String subStr){
        if(mainStr.length()>=subStr.length()){
            int count=0;
            int index=0;
            //方式一:
//            while((index=mainStr.indexOf(subStr)) !=-1){
//                count++;
//                mainStr=mainStr.substring(index+subStr.length());
//            }
            //方式二:
            // int indexOf(String str, int fromIndex):
            // 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
            while ((index=mainStr.indexOf(subStr,index))!=-1){
                count++;
                index+=subStr.length();
            }
            return count;
        }
        return 0;
    }
    @Test
    public void test1(){
        String s="abkkcadkabkebfkabkskab";
        String test="ab";
        int i = GetCount(s, test);
        System.out.println(i);
    }
4.获取两个字符串中最大相同子串。比如:str1 = "abcwerthelloyuiodef“;str2 = "cvhellobnm"
提示:将短的那个串进行长度依次递减的子串与较长的串比较。
 //情况一:两个字符串中只有一个最大相同子串
    public String compare(String s1,String s2){
       if(s1!=null && s2!=null){
           String maxStr=(s1.length()>=s2.length())? s1:s2;
           String minStr=(s1.length()=s2.length())? s1:s2;
            String minStr=(s1.length() 
5.对字符串中字符 进行自然顺序排序 。
提示:
1)字符串变成字符数组
2)对数组排序,选择,冒泡 Arrays.sort
3)将排序后的数组变成字符串
public String Sort(String s){
        if(s!=null){
            char[] chars = s.toCharArray();
            for(int i=0;ichars[j+1]){
                        char temp=chars[j];
                        chars[j]=chars[j+1];
                        chars[j+1]=temp;
                    }
                }
            }
            //Arrays.sort(chars);
            return new String(chars);
        }
           return null;
    }
    @Test
    public void test(){
        String s1="abcwerthelloyuiodef";
        String sort = Sort(s1);
        System.out.println(s1);
        System.out.println(sort);
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5707602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存