데이터 구조 - 알고리즘 (010) (문자열 의 좌회전 동작)

1084 단어
[설명: 본 고 는 자기 귀납 적 정리 와 상호 교류 에 국한 되 며 오류 가 있 으 면 여러분 께 서 지적 해 주 십시오. 연락 메 일: [email protected]
제목: 문자열 의 왼쪽 회전 동작 을 정의 합 니 다. 문자열 앞 에 있 는 몇 개의 문 자 를 문자열 의 끝 부분 으로 이동 합 니 다. 예 를 들 어 문자열 abcdef 를 왼쪽 으로 2 비트 회전 시 켜 문자열 cdefab 를 얻 습 니 다.문자열 의 왼쪽 회전 함 수 를 실현 하 십시오. 길이 가 n 인 문자열 에 대한 작업 시간 복잡 도 는 O (n) 이 고 공간 복잡 도 는 O (1) 입 니 다.
제목 분석:
1. 방법 이 많 습 니 다. 그 중의 한 가지 만 실현 하고 방법 은 간단 합 니 다. 코드 를 직접 보고 실현 합 니 다.
알고리즘 구현:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
**     
*/
char * left_one_step(char *s, int size)
{
	char c = s[0];
	int i=0;
	for( ;i<size; ++i)
		s[i] = s[i+1];
	s[--i] = c;
	return s;
}

char * left_n_step(char *s, int size, int n)
{
	char *re = s;
	/*
	**            ,   
	**      
	*/
	int m = n%size; 
	while(m--)
	{
		re = left_one_step(re, size);
	}
	return re;
}

int main(int argc, char *argv[])
{
	char *str = strdup(argv[1]);
	printf("%s--left:%d--->%s
", argv[1], atoi(argv[2]), left_n_step(str, strlen(str), atoi(argv[2]))); free(str); return 0; }

좋은 웹페이지 즐겨찾기