栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

P475 String课后算法题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

P475 String课后算法题

课后题二
public class StringExer1 {
    //方式一:转换为char[]
    public String reverse(String str,int startIndex,int endIndex){
        if(str!=null &&str.length()!=0){
            char[] arr = str.toCharArray();
            for(int x=startIndex,y=endIndex;x= startIndex; i--) {//数组的索引是5
                reverseStr += str.charAt(i);
            }
            //第三部分,拼接fg
            reverseStr += str.substring(endIndex + 1);
            return reverseStr;
        }
        return null;
    }
    //方式三:使用StringBuffer/StringBuilder替换String 没有多线程就用StringBuilder
    public String reverse2(String str,int startIndex,int endIndex) {
        if(str!=null){
            StringBuilder builder = new StringBuilder(str.length());

            //第一部分
            builder.append(str.substring(0,startIndex));//左闭右开 ab添加进builder
            //第二部分
            for (int i = endIndex; i >= startIndex; i--) {
                builder.append(str.charAt(i));//倒着添加
            }
            //第三部分
            builder.append(str.substring(endIndex+1));//添加最后一个g

            return builder.toString();
        }
        return null;
    }
    @Test
    public void reverse(){
        String str="abcdefg";
        String reverse = reverse(str, 2, 5);
        System.out.println(reverse);
    }
    @Test
    public void reverse1(){
        String str="abcdefg";
        String reverse = reverse1(str, 2, 5);
        System.out.println(reverse);
    }
    @Test
    public void reverse2(){
        String str="abcdefg";
        String reverse = reverse2(str, 2, 5);
        System.out.println(reverse);
    }
}

课后题三
public class StringExer2 {
    public int getCount(String mainStr,String subStr){//subStr在mainStr中出现的次数
        int mainLength=mainStr.length();
        int subLength=subStr.length();
        int count=0;
        int index;
        if(mainLength>subLength){
            //要用while, 不能用if,用if的话只执行一次了
            while((index=mainStr.indexOf(subStr))!=-1){//返回的是第一个ab的第一个a的索引0
                count++;
                //找到第一个ab后,索引位置处+2 重新截取一个子串(去掉了第一个ab),然后继续寻找
                mainStr=mainStr.substring(index+subStr.length());//得到一个新子串继续判断
            }
            return count;
        }else {
            return 0;
        }
    }
    //方式二,改进
    public int getCount1(String mainStr,String subStr){//subStr在mainStr中出现的次数
        int mainLength=mainStr.length();
        int subLength=subStr.length();
        int count=0;
        int index=0;
        if(mainLength>subLength){
            //要用while, 不能用if,用if的话只执行一次了
            while((index=mainStr.indexOf(subStr,index))!=-1){//从index索引后接着调indexOf
                count++;
                index+=subLength;//index要加上subStr的长度,然后重新找
            }
            return count;
        }else {
            return 0;
        }
    }
    @Test
    public void testGetCount(){
        String mainStr="abkkcadkabkebfkabkskab";
        String subStr="ab";
        int count=getCount(mainStr,subStr);
        System.out.println(count);
    }
    @Test
    public void testGetCount1(){
        String mainStr="abkkcadkabkebfkabkskab";
        String subStr="ab";
        int count=getCount1(mainStr,subStr);
        System.out.println(count);
    }
}
课后题四
public class StringExer3 {
    //前提 两个字符串中只有一个最大的相同子串
    public String getMaxSameString(String str1,String str2){
        if(str1!=null&&str2!=null){
            String maxStr=(str1.length()>=str2.length())?str1:str2;
            String minStr=(str1.length()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/301640.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号