首页 > 试题广场 >

字符串的旋转

[编程题]字符串的旋转
  • 热度指数:46861 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

对于一个字符串,和字符串中的某一位置,请设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。

给定字符串A和它的长度n以及特定位置p,请返回旋转后的结果。

测试样例:
"ABCDEFGH",8,4
返回:"FGHABCDE"
import java.util.*;

public class StringRotation {
    public String rotateString(String A, int n, int p) {
        // write code here
        String strLeft=A.substring(0,p+1);
        String strRight=A.substring(p+1,n);
        
        return strRight+strLeft;
    }
}
发表于 2019-12-28 22:58:51 回复(0)
主要是考察了subString的用法,前闭后开。
发表于 2019-04-09 10:42:48 回复(0)
import java.util.Scanner;🤣🤣🤣🤣🤣🤣
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while(in.hasNext()) {
        String s=in.next();        int x=0;int x2=0;int p1=0;int p2=0;
        for(int i=s.length()-2;i>0;i--) {
            if(s.charAt(i)==',') {
                p1=Integer.parseInt(s.substring(i+1));
                x=i;
                break;
            }
        }
        for(int i=x-1;i>0;i--) {
            if(s.charAt(i)==',') {
                p2=Integer.parseInt(s.substring(i+1,x));
                x2=i;
                break;
            }
        }
        System.out.print(s.charAt(0));
        System.out.print(s.substring(p1+2, p2+1));
        System.out.print(s.substring(1, p1+2));
        System.out.println('"');
    }
}
}
发表于 2019-02-28 22:42:15 回复(0)
return A.substring(p+1) + A.substring(0, p+1);

编辑于 2019-01-18 11:31:31 回复(0)
思路很清晰的一道题目,就是字符串的分割与重组,很佩服大佬们巧妙的一行或三行代码,
return A.substr(p+1, n) + A.substr(0, p+1);//对于函数substr()的巧妙使用
return (A+A).substr(p+1,n);//调用一次substr()函数


发表于 2018-09-08 15:47:53 回复(0)
传说中的一行代码:
return A.substring(p+1)+A.substring(0, p+1);
发表于 2018-08-19 17:47:06 回复(0)
import java.util.*;

public class StringRotation {
    public String rotateString(String A, int n, int p) {
        // write code here
        return A.substring(p + 1, n)+A.substring(0, p + 1);
        
    }
}

发表于 2018-04-02 13:32:44 回复(0)
import java.util.*;

public class StringRotation {
    public String rotateString(String A, int n, int p) {
        return A.substring(p+1,A.length())+A.substring(0,p+1);
    }
}

发表于 2018-03-13 15:46:57 回复(0)
import java.util.*;
//两次分别翻转,再整体翻转。前面都说了很多了,就不赘述了,仅来签到而已
public class StringRotation {
    public String rotateString(String str, int n, int p) {
        
        String strA = str.substring(0,p+1);
        String strB = str.substring(p+1,n);
        
        StringBuilder sbA = new StringBuilder(strA);
        StringBuilder sbB = new StringBuilder(strB);
        
        strA = sbA.reverse().toString();
        strB = sbB.reverse().toString();
        
        StringBuilder sb = new StringBuilder(strA+strB);
        String res = sb.reverse().toString();
        
        return res;
    }
}
编辑于 2017-08-03 11:14:05 回复(0)
public class StringRotation {
    public String rotateString(String A, int n, int p) {
        // write code here
        String sub1 = A.substring(0,p+1);
        String sub2 = A.substring(p+1,n);
        String s = sub2+sub1;
        return s;
    }
}

发表于 2017-03-04 11:55:03 回复(0)
import java.util.*;
public class StringRotation {
   public String rotateString(String A, int n, int p) {
		return A.substring(p + 1) + A.substring(0, p + 1);
	}
}

发表于 2016-10-18 09:28:29 回复(0)
三步翻转法:
import java.util.*;

public class StringRotation {


	
	 public String rotateString(String A, int n, int p) {
	        String s1=A.substring(0, p+1);
	        String s2=A.substring(p+1);
	        s1=rotate(s1);
	        s2=rotate(s2);
	        A=s1+s2;
	        A=rotate(A);
	        return A;
	    }

	private String rotate(String a) {
		StringBuffer sb=new StringBuffer();
		char[] sh=a.toCharArray();
		for(int i=a.length()-1;i>=0;i--){
			sb.append(sh[i]);
		}
		return sb.toString();
	}

}

发表于 2016-09-02 09:26:48 回复(0)
import java.util.*;

public class StringRotation {
    public String rotateString(String A, int n, int p) {
        // write code here
        return A.substring(p+1) + A.substring(0,p+1);
    }
}

发表于 2016-08-18 15:11:53 回复(0)
import java.util.*;

public class StringRotation {
    public String rotateString(String A, int n, int p) {
        // write code here
       String str1 = A.substring(0,p+1);
        String str2 = A.substring(p+1,n);
        return str2.concat(str1);
    }
}

发表于 2016-07-14 22:30:21 回复(0)
return (new StringBuffer())
            .append(A.substring(p+1))
            .append(A.substring(0, p+1)).toString();
发表于 2016-06-28 16:04:32 回复(0)
return A.substring(p + 1).concat(A.substring(0, p + 1));
发表于 2016-06-21 22:07:52 回复(0)