算法强化每日一题--倒置字符串

简介: 算法强化每日一题--倒置字符串

今天为大家带来算法强化的题目,倒置字符串!!!


链接:倒置字符串__牛客网

来源:牛客网


将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I


输入描述:


每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100

输出描述:


依次输出倒置之后的字符串,以空格分割

示例1


输入

I like beijing.

输出

beijing. like I


做题思路:

刷题就是很需要思路,就是得静下心来想的!!!

思路:

1.定义两个变量,一个指向0下标,另一个指向length-1下标

2.对字符串整体进行逆置

3.对每一个部分都要进行逆置


7022c1ea14b94c4c990e82ef28899650.png

1.先整体逆置

2.分别对每一段小的字符串逆置

然后根据思路写代码,具体注释也在代码中


//这个题的思路是先整体进行逆置,得到  gnijieb  ekil  I
    //然后分别对每一部分的单词进行逆置,最后返回即可
public class Main {
    public static void reverse(char[] array,int start,int end){
        while(start<end){
            char tmp=array[start];
            array[start]=array[end];
            array[end]=tmp;
            start++;
            end--;
        }
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String s=scanner.nextLine();
        char[] ch=s.toCharArray();
        int len=ch.length;
//        int start=0;
//        int end= ch.length-1;
        //1.完成了整体的逆置
        reverse(ch,0,len-1);
        //2.每一部分也要逆置
        int i=0;
        while(i< len){
            int j=i;
            while(j< len&&ch[j]!=' '){
               j++;
            }
            if(j<len){//走到这一步说明不满足第一个小于长度的条件或者不满足第二个不等于空格的条件,这里就是j=空格了
                reverse(ch,i,j-1);
                i=j+1;
            }else{//j一直++,到最后一个字母I,此时j=长度了,不满足<长度,但是只有一个字母
                reverse(ch,i,j-1);
                i=j;//让i=j
            }
        }
        //最后要以字符串的形式输出
        String str=new String(ch);
        System.out.println(str);
    }
}

虽然很难,但是我们是打不死的小强,我们一起加油,干就完了!!!奥利给!!!

                             

完结撒花🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸

相关文章
|
2月前
|
算法
【优选算法】—— 字符串匹配算法
【优选算法】—— 字符串匹配算法
|
3月前
|
人工智能 算法 测试技术
【动态规划】【字符串】【C++算法】940. 不同的子序列 II
【动态规划】【字符串】【C++算法】940. 不同的子序列 II
|
4月前
|
算法 测试技术 C#
【动态规划】【字符串】C++算法:正则表达式匹配
【动态规划】【字符串】C++算法:正则表达式匹配
|
3月前
|
机器学习/深度学习 算法 C语言
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
73 0
|
12天前
|
算法
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
22 1
|
21天前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
2月前
|
算法 Java
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
23 0
|
3月前
|
算法 测试技术 C++
【字符串】【 LCP】【C++算法】2573找出对应 LCP 矩阵的字符串
【字符串】【 LCP】【C++算法】2573找出对应 LCP 矩阵的字符串
|
3月前
|
存储 算法
【编码狂想】LeetCode 字符串和数组篇:挑战算法精髓,深化程序设计基础
【编码狂想】LeetCode 字符串和数组篇:挑战算法精髓,深化程序设计基础
37 0
|
4月前
|
算法 测试技术 C#
【map】【滑动窗口】【字典树】C++算法:最长合法子字符串的长度
【map】【滑动窗口】【字典树】C++算法:最长合法子字符串的长度