작은 문자열 제목

"You are good" 문자열 이 있 습 니 다. 우 리 는 s1 이 라 고 부 르 고 다른 문자열 인 "uro" 는 s2 라 고 부 릅 니 다. 알고리즘 을 설계 하여 s1 에 동시에 존재 하 는 문 자 를 제거 합 니 다.예 를 들 어 s1 은 s2 의 조건 에서 결 과 는 'Y ae gd' 여야 한다. 메모리 공간 이 작 을 수록 속도 가 빨 라 질 수록 좋다.나의 생각: 1. 두 개의 정수 포인터 i 를 만 들 고 pointer. 시작 은 모두 0 입 니 다.2. 문자열 길이 에 따라 이 문자열 을 옮 겨 다 니 며 i 위치의 문 자 를 s2 에 조회 합 니 다.     3. 존재 하지 않 는 다 면 i, pointer 와 각각 1. 증가 하고 i 위치의 문 자 를 pointer 위치 로 복사 합 니 다.     4. 존재 한다 면 i 만 1. 5. pointer 위치 와 그 후의 문 자 를 빈 문자 로 대체 합 니 다.c \ # 프로그램:

    public class Program {
        public static void Main() {
            String s1 = "uro";
            String s2 = "You are good";
            char[] s1Array = s1.ToCharArray();
            char[] s2Array = s2.ToCharArray();
            int length = s2.Length;
            int pointer = 0;
            for (int i = 0; i < length; i++) {
                if (!Exist(s1Array, s2Array[i])) {
                    s2Array[pointer] = s2Array[i];
                    pointer++;
                }
            }
            for(int i=pointer;i<length;i++){
                s2Array[i] = ' ';
            }
            Console.WriteLine(new String(s2Array));
        }
 
        public static bool Exist(char[] s1, char c) {
            foreach (var item in s1) {
                if (item == c) {
                    return true;
                }
            }
            return false;
        }
    }

좋은 웹페이지 즐겨찾기