알고리즘 의 길 - 좌우 회전 문자열
6334 단어 문자열
다음 알고리즘 은 회전 과 오른쪽 회전 을 할 수 있 습 니 다.
원리:
abcde123456
회전 할 자릿수 k 에 따라 배열 을 두 개의 문자열 로 나 누 었 습 니 다. 예 를 들 어 K = 6, 오른쪽 회전 을 하면 문자열 을 abcde 와 123456 (K 비트) 으로 나 누 었 습 니 다.
구분 기법: 오른쪽 회전, 뒤 면 꼬치 수 는 K 이 고 나머지 는 앞 면 꼬치 로 합 니 다.왼쪽 회전 이 라면 앞 면 꼬치 수 는 K 이 고 나머지 는 뒤 면 꼬치 로 한다.
위 abcde 123456 에서 좌회전 K = 6 비트 를 진행 하면 문자열 의 구분 은 abcde 1 (K 비트) 입 니 다. 23456
이 어 abcde 와 123456 에 대해 역순 작업 결 과 를 실시 했다.
edcba 와 654321
합병
edcba654321
재 전체 역순
123456abcde
장점: 3 개의 reverse 조작 은 모두 선형 조작 이 고 앞의 두 시간 복잡 도와 0 (n / 2) 이 며 마지막 전체 역순 시간 복잡 도 는 0 (n / 2) 이 고 총 시간 복잡 도 는 O (n) 이 며 일반적인 같은 기능 알고리즘 보다 시간 복잡 도가 낮다.
package ;
import java.util.Scanner;
/**
* *
* @author ccf
*
*/
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(" :");
Scanner input = new Scanner(System.in);
char[] charArray = input.nextLine().toCharArray();
System.out.println(" ");
int shiftNum = Integer.parseInt(input.nextLine());
System.out.println(" " + new String(charArray) + " "
+ shiftNum);
// charArray = RightShift(shiftNum, charArray);
charArray = LeftShift(shiftNum, charArray);
System.out.println(" :" + String.valueOf(charArray));
}
/**
*
*
* @param src
* @param begin
* @param end
* @return
*/
private static char[] reverse(char[] src, int begin, int end) {
char temp;
for (; begin < end; end--, begin++) {
temp = src[begin];
src[begin] = src[end];
src[end] = temp;
}
return src;
}
/**
*
* @param k
*
* @param src
*/
private static char[] RightShift(int k, char[] src) {
src = reverse(src, 0, src.length - k - 1);
src = reverse(src, src.length - k, src.length - 1);
// , K
src = reverse(src, 0, src.length - 1);
return src;
}
private static char[] LeftShift(int k, char[] src) {
src = reverse(src, 0, k - 1);
// , K
src = reverse(src, k, src.length - 1);
src = reverse(src, 0, src.length - 1);
return src;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
비슷한 이름의 Attribute를 많이 만들어 삭제하는 Houdini사용 소프트웨어는 Houdini16.5입니다 배열에서는 애트리뷰트의 보간이 잘 동작하지 않는 것과 AttributeCreateSOP 노드에서 Size가 4를 넘는 애트리뷰트를 작성해도 값이 조작할 수 없어 의미가 없...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.