zoukankan      html  css  js  c++  java
  • String类练习

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

    2.将一个字符串进行反转。将字符串中指定部分进行反转

    3.获取一个字符串在另一个字符串中出现的次数

    4.获取两个字符串中最大相同子串

    5.对字符串中字符进行自然顺序排序

    StringDemo 
    package com.ff.string;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class StringDemo {
        public static void main(String[] args) {
            String str = "     abd   de     ";
            String str1 = myTrim(str);
            System.out.println(str1);// abd de
    
            String str2 = "abcdefg";
            String str3 = myReverseString1(str2, 2, 5);// abfedcg
            String str4 = myReverseString2(str2, 2, 5);// abfedcgs
            System.out.println(str3 + "," + str4);// abfedcg,abfedcg
            System.out.println(str3 + str4);// abfedcgabfedcg
    
            String str5 = "abkkcadkabkebfkabkskab";
            String str6 = "ab";
            System.out.println(getTime(str5, str6));// 4
    
            List<String> str7 = getMaxSubString("abcwerthelloyuiomdef", "cvhellobnyuiom");
            System.out.println(str7);// [hello, yuiom]
    
            String str8 = "adfagdgdada";
            String str9 = sort(str8);
            System.out.println(str9);// aaaaddddfgg
        }
    
        // 5.对字符串中字符进行自然顺序排序。
        // 提示:1)字符串变成字符数组。
        //      2)对数组排序,选择,冒泡,Arrays.sort();
        //      3)将排序后的数组变成字符串。
        public static String sort(String str) {
            char[] c = str.toCharArray();// 转换为数组
            Arrays.sort(c);
            return new String(c);
        }
    
        // 4.获取两个字符串中最大相同子串。比如: str1 = "abcwerthelloyuiodef“;str2 = "cvhellobnm"
        //   提示:将短的那个串进行长度依次递减的子串与较长的串比较。
        public static List<String> getMaxSubString(String str1, String str2) {
            String maxStr = (str1.length() > str2.length()) ? str1 : str2;
            String minStr = (str1.length() < str2.length()) ? str1 : str2;
            int len = minStr.length();
            List<String> list = new ArrayList<String>();
            for (int i = 0; i < len; i++) {
                for (int x = 0, y = len - i; y <= len; x++, y++) {
                    String str = minStr.substring(x, y);
                    if (maxStr.contains(str)) {
                        list.add(str);
                    }
                }
                if (list.size() != 0) {
                    return list;
                }
            }
            return null;
        }
    
        // 3.获取一个字符串在另一个字符串中出现的次数。比如:获取“ ab”在 "abkkcadkabkebfkabkskab"中出现的次数
        //   str2在str1中出现的次数
        public static int getTime(String str1, String str2) {
            int count = 0;
            int len;
            while ((len = str1.indexOf(str2)) != -1) {
                count++;
                str1 = str1.substring(len + str2.length());
            }
            return count;
        }
    
        // 2.将一个字符串进行反转。将字符串中指定部分进行反转。
        //   比如将"abcdefg"反转为"abfedcg"
        //   方法二: 将abcdefg分为三部分,ab cdef g,前面的不变,中间的从后面一个个加进来,再加上最后一部分
        public static String myReverseString2(String str, int start, int end) {
            String str1 = str.substring(0, start);// 截取的第一部分
            for (int i = end; i >= start; i--) {
                char c = str.charAt(i);
                str1 += c;// 加上一个个从后往前字符
            }
            str1 += str.substring(end + 1);// 加上后一部分
            return str1;
        }
    
        // 方法一:使用数组的方式转换
        public static String myReverseString1(String str, int start, int end) {
            char[] c = str.toCharArray();// 字符串转为数组
            return reverseArray(c, start, end);
        }
    
        private static String reverseArray(char[] c, int start, int end) {
            for (int i = start, j = end; i < j; i++, j--) {
                char temp = c[i];
                c[i] = c[j];
                c[j] = temp;
            }
            // 字符数组--->字符串
            return new String(c);
        }
    
        // 1.模拟一个trim方法,去除字符串两端的空格
        public static String myTrim(String str) {
            int start = 0;
            int 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
        }
    }
    All that work will definitely pay off
  • 相关阅读:
    Ubuntu下官方QQ崩溃的解决
    [转]PHP函数的实现原理及性能分析
    [收藏的资料]301重定向的实现方法
    手动配置Ubuntu 指定DNS服务器地址
    C# FTP操作类
    vs2010 快捷键大全
    分享一个不错的VS插件——CodeMap
    C# 快速的批量修改重命名.net程序的命名空间(一)转 tianyaxiang
    jquery 的 ajax 程序 简单的
    winform窗体间传值
  • 原文地址:https://www.cnblogs.com/afangfang/p/12618332.html
Copyright © 2011-2022 走看看