字符串的几种应用,去除两端空格,将字符串反串,取出一个字符串在另一个字符串的次数,获取一个字符串在另一个字符串中最大子串



package it.drenched.day13;

public class StringTest {


 public static void main(String[] args) {
   String s="abadccfcc ";
 String s1=myTrim(s);
 print(s1);
 String s2=reverseString(s);
 print(s2);
 int count = getSubCount(s,"cc");
 print(count);
 
 String s3="asadsadfsfdsdf";
 String s4 ="sad";
 print(getMaxSubString(s3,s4));
 
 }
 
  //  练习 一 :去除字符串两端空格
 
  public static String myTrim(String s)
  {
    System.out.println(s);
     int start =0,end =s.length()-1;
     while(start<=end && s.charAt(start)==' ')  
      start ++;       
     while(start<=end && s.charAt(end)==' ')
      end--;    
     return s.substring(start, end +1);   
  }
  
  // 练习 二:将字符串反串
  
    //  思路:
   // 1.对字符串变成数组
   // 2.对数组反转
   // 3.将数组变成字符串
    public static String reverseString(String s)
    {
     
        char[] arr = s.toCharArray();   
        reverse(arr);
  return new String(arr);
     
    }
  
 
 private static void reverse(char[] arr) {
  
  for(int start=0, end =arr.length-1;start<end;start++,end--)
  {
   swap(arr,start,end);
  }  
 }

 private static void swap(char[] arr, int start, int end) {
  
  
  char temp = arr[start];
  arr[start] = arr[end];
  arr[end] = temp; 
 }
 
 /*
  * 练习三 :获取一个字符串在另一个字符串中出现的次数
  * "abbabbsadsadasdaassad"
  * 思路:
  *    1.定义一个计数器
  *    2.获取bb第一次出现的位置
  *    3.从第一次出现位置后剩余的字符串中获取bb出现的位置
  *      每获取依次就计数一次.
  *    4.当获取不到时,计数完成
  */

  public static int getSubCount(String str,String key)
  {
   int count =0;
   int index =0;
   while((index =str.indexOf(key))!=-1)
   {
    str=str.substring(index+key.length());
   count ++;
   }
   return count;
  }
  public static int getSubCount_2(String str,String key)
  {
   int count =0;
   int index= 0;
   while((index = str.indexOf(key,index))!=-1)
   { 
    index = index + key.length();
   count++;
   }
   return count;
  }
  
  /*
   * 练习四:获取两个字符串中两个相同的最大子串
   * 第一个动作:将短的那个串进行长度依次递减的子串打印
   *
   * 思路:
   *     1.将短的那个子串按照长度递减的方式获取到
   *     2.将没获取到的子串去长串中判断是否包含
   *       如果包含,已经找到。
   */
  public static String getMaxSubString(String s1,String s2)
  {
   
   String max ="",min ="";
   max = (s1.length()>s2.length())?s1:s2;
   min = (max ==s1)?s2:s1;
   for(int i=0;i<min.length();i++)
   {   
    for(int j=0,z =min.length()-i;z!=min.length()+1;j++,z++)
    {
          String temp = min.substring(j, z);
      // print(temp);
          if(max.contains(temp))
           return temp;
   }
   }  
   return "";
  }


 public static void print(Object obj)
 {
  System.out.println(obj);
 }

 
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值