Java函数中关于String类的练习题

前面我们具体的介绍了Java中常用的两种函数,一种是Math类,另一种是String类,并且对于每个类中的具体方法都举了相关实例,这次我们再来对String类中的几个方法做一些练习。

class Test03{
    public static void main(String[] args){
        /*
        问题1:求s2在s1中出现的次数
        s1 = "12376128736123123612312312536123123"
        s2 = "12"
        */
        question1();

        /*
        问题2:判断字符串s是否是回文字符串
        s="上海自来水来自海上"
        */
        question2();
        
		/*		
        问题3:模拟trim的功能,自定义实现
        s="      123123123     "
        */
        question3();
		
        /*
        问题4:求s1和s2中最大的相同子串(s1.length()>s2.length())
        s1="Python is a program language but is slow";
        s2="Java is a program language but is fast"
        */
        question4();
    }
    public static void question1(){
        /*
        问题1:求s2在s1中出现的次数
        s1="12376128736123123612312312536123123"
        s2="12"
        */
        String s1 = "12376128736123123612312312536123123";
        String s2 = "12";
        int count = 0;
        for(int i = 0;i < s1.length() - s2.length() + 1;i++){
            String sub = s1.substring(i,i + s2.length());
            if(sub.equals(s2)){
                count++;
            }
        }
        System.out.println("s2在s1中出现了" + count + "次");
    }
    public static void question2(){
        /*
        问题2:判断字符串s是否是回文
        s="上海自来水来自海上"
        */
        String s = "上海自来水来自海上";
        int left = 0;
        int right = s.length() - 1;
        boolean flag = true;
        while(true){
            if(s.charAt(left) == s.charAt(right)){
                left++;
                right--;
                if(left >= right){
                    break;
                }
            }else{
                flag = false;
                break;
            }
        }
        System.out.println("s是回文吗: " + flag);
    }
    public static void question3(){
        /*
        问题3:模拟trim的功能,自定义实现
        s="      123123123     "
        */
        String s = "      123123123     ";
        int left = 0;
        int right = s.length() - 1;
        while(s.charAt(left) == ' '){
            left++;
        }
        while(s.charAt(right) == ' '){
            right--;
        }
        String res = s.substring(left,right + 1);
        System.out.println("[" + res + "]");
    }
    public static void question4(){
        /*
        问题4:求s1和s2中最大的相同子串(s1.length()>s2.length())
        s1="Python is a program language but is slow";
        s2="Java is a program language but is fast"
        字串为 " is a program language but is "
        */
        String s1 = "Python is a program language but is slow";
        String s2 = "Java is a program language but is fast";
        boolean flag = true;
        for(int len = s2.length();len >= 1;len--){
            for(int i = 0,j = len - 1;j < s2.length();i++,j++){
                String sub = s2.substring(i,j + 1);
                // System.out.println(sub);
                if(s1.contains(sub)){
                    flag = false;
                    System.out.println("结果就是[" + sub + "]");
                    break;
                }
            }
            if(!flag){
                break;
            }
        }
    }
}

运行结果:

s2在s1中出现了9次
s是回文吗: true
[123123123]
结果就是[ is a program language but is ]

这串代码中举了关于String类中的4个方法的实例,具体的运算过程和步骤在代码中都写得很详细,感谢大家的观看!

发布了18 篇原创文章 · 获赞 25 · 访问量 3863

猜你喜欢

转载自blog.csdn.net/Agonyq/article/details/104311825