JAVA_String 示例

例一 模拟一个trim方法,去除字符串两端的空格。

思路:
1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。结尾处判断空格也是如此。(需注意:start<=end)
2,当开始和结尾都判断到不是空格时,记下此处的位置,就是要获取的字符串。(使用String substring(int a , int b)方法)

     public static String myTrim(String str)
         {
         int start = 0,end = str.length()-1;
         while(start<=end && str.charAt(start)==' ')
               start++;
         while(start<=end && str.charAt(end)==' ')
               end--;
         return str.substring(start,end+1);
         }
例二 将字符串中指定部分进行反转

思路:
1,将字符串变成数组。(char[] toCharArray()方法)
2,对数组反转。(使用for循环首尾交换)
3,将数组变成字符串。(构造函数: String(char[]))

class Demo{
       public static String reverseString(String s,int start,int end)
          {
             //字符串变数组。
             char[] chs = s.toCharArray();
            //反转数组。
             reverse(chs,start,end);
           //将数组变成字符串。
             return new String(chs);
          }
      public static String reverseString(String s)
         {
            return reverseString(s,0,s.length());   
         }
      private static void reverse(char[] arr,int x,int y)
        {
            for(int start=x,end=y-1; start<end ; start++,end--)
       {
             swap(arr,start,end);
        }
            }
      private static void swap(char[] arr,int x,int y)
    {
        char temp = arr[x];
        arr[x] = arr[y];
        arr[y] = temp;
    }
}
例三 获取一个字符串在另一个字符串中出现的次数

思路:
1,定义个计数器。
2,获取kk第一次出现的位置。
3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置。
每获取一次就计数一次。
4,当获取不到时,计数完成。

class  StringTest3
{

    /*
    练习三。

    */
    
    public static int getSubCount(String str,String key)
    {
        int count = 0;
        int index = 0;

        while((index=str.indexOf(key))!=-1)
        {
            sop("str="+str);
            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)
        {
            sop("index="+index);
            index = index + key.length();

            count++;
        }
        return count;
    }

    public static void main(String[] args) 
    {
        String str = "kkabkkcdkkefkks";

        ///sop("count====="+str.split("kk").length);不建议使用。

        sop("count="+getSubCount_2(str,"kk"));
    }

    public static void sop(String str)
    {
        System.out.println(str);
    }
}
例四 获取两个字符串中最大相同子串

思路:
1,将短的那个子串按照长度递减的方式获取到。
2,将每获取到的子串去长串中判断是否包含,如果包含,已经找到!

class  StringTest4
{
    /*
    练习四。
    */
    public static String getMaxSubString(String s1,String s2)
    {

        String max = "",min = "";

        max = (s1.length()>s2.length())?s1: s2;

        min = (max==s1)?s2: s1;
        
//      sop("max="+max+"...min="+min);
        for(int x=0; x<min.length(); x++)
        {
            for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++)
            {
                String temp = min.substring(y,z);
                
                sop(temp);
                if(max.contains(temp))//if(s1.indexOf(temp)!=-1)
                    return temp;
            }
        }
        return "";
    }


    public static void main(String[] args) 
    {
        String s1 = "ab";
        String s2 = "cvhellobnm";
        sop(getMaxSubString(s2,s1));
    }

    public static void sop(String str)
    {
        System.out.println(str);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。