2014-11-03 1 views
0

원하는 문자열 조작 절차 : 문자의 연속 인스턴스가 두 개 이상있는 경우 첫 번째 문자 만 유지하십시오. "Steelsmith"가 주어지면 "Stelsmith"라는 문자열을 남기고 첫 번째 "e"를 삭제하십시오.문자열의 경우 반복되는 문자는 어떻게 제거합니까?

여기 내 algorithim입니다 :

void replace(string s) 
{ 
    int length = s.length(); 

    for (int i = 0; i < length; i ++) 
    { 
     if (s[i] == s[i + 1]) 
     { 
      s.erase(1+i); 

     } 

    } 
    cout << s << endl; 
} 

I 입력 "Steelsmith는"출력은 "인트는"이므로 문자열의 나머지와 함께 두 번째 'E'를 삭제

. 나머지 문자열은 어떻게 유지합니까?

답변

5

당신은 방법에 내장하여이처럼 코딩 할 수 있습니다 :이 도움이

s.erase(std::unique(s.begin(), s.end()), s.end()); 

희망, 행운을 빌어 요!

+0

감사합니다 사람, 나는 그것을 감사 string& erase (size_t pos = 0, size_t len = npos);

인수는 위치와 길이있다! – user3598181

+0

방금 ​​테스트 한 결과 Stelsmith가 출력되었습니다. – user3598181

+0

@ user3598181 괜찮습니다! 내 대답을 수락하는 것을 잊지 마라. 그러면 다른 사람들도 도울 수있다. – phantom

관련 문제