今天为大家带来算法强化的题目,倒置字符串!!!
链接:倒置字符串__牛客网
来源:牛客网
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
输入描述:
每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100
输出描述:
依次输出倒置之后的字符串,以空格分割
示例1
输入
I like beijing.
输出
beijing. like I
做题思路:
刷题就是很需要思路,就是得静下心来想的!!!
思路:
1.定义两个变量,一个指向0下标,另一个指向length-1下标
2.对字符串整体进行逆置
3.对每一个部分都要进行逆置
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); } }
虽然很难,但是我们是打不死的小强,我们一起加油,干就完了!!!奥利给!!!
完结撒花🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸