\ # 데이터 구조 와 알고리즘 학습 노트 \ # 검 지 제공 42: 단어 순 서 를 뒤 집기 + 테스트 사례 (자바, C / C +)
3399 단어 C/C++데이터 구조 와 알고리즘JAVA검지 제공
인터넷 에 서 는 원 서 를 포함 한 많은 방법 이 문장 을 두 번 뒤 집 는 것 이다. 첫 번 째 는 전체 문자열 을 뒤 집 고 두 번 째 는 빈 칸 을 간격 으로 모든 단 어 를 뒤 집 는 것 이다.자바 를 사용 하면 이렇게 번 거 롭 지 않 아 도 됩 니 다. split 를 이용 하여 빈 칸 으로 문자열 을 나 누 어 마지막 문자열 을 StringBuilder 로 바 꾸 고 뒤에서 계속 append 하면 됩 니 다.
제목 설명
영어 문장 을 입력 하고 문장 속 단어의 순 서 를 뒤 집 지만 단어 내 문자 의 순 서 는 변 하지 않 습 니 다.문장 부 호 는 일반 자모 와 동등 하 게 처리 된다.예 를 들 어 'student. a am I' 는 'I am a student' 를 출력 한다.
Java 구현:
/**
*
* @author ChopinXBP
* 。 ,“student. a am I”。
*/
public class ReverseSentence_42 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(ReverseSentence("I am a student."));
System.out.println(ReverseSentence(" "));
}
public static String ReverseSentence(String str) {
if(str == null || str == "")return "";
if(str == " ")return " ";
String[] strlist = str.split(" ");
int length = strlist.length - 1;
if(length < 0)return "";
StringBuilder newstr = new StringBuilder(strlist[length--]);
while(length >= 0) {
newstr.append(" ").append(strlist[length--]);
}
return newstr.toString();
}
}
C + + 구현 예시:
class Solution {
public:
string ReverseSentence(string str) {
auto size = str.size();
if(size == 0) return "";
int mark=0;
str += ' ';
for(int i = 0; i < size+1; ++i){
if(str[i] == ' '){
ReverseWord(str, mark, i-1);
mark = i+1;
}
}
str = str.substr(0, size);
ReverseWord(str, 0, size-1);
return str;
}
void ReverseWord (string &str, int l, int r){
while(l < r){
swap(str[l], str[r]);
++l;
--r;
}
}
};
테스트 코드:
// ==================== ====================
void Test(char* testName, char* input, char* expectedResult)
{
if(testName != NULL)
printf("%s begins: ", testName);
ReverseSentence(input);
if((input == NULL && expectedResult == NULL)
|| (input != NULL && strcmp(input, expectedResult) == 0))
printf("Passed.
");
else
printf("Failed.
");
}
// ,
void Test1()
{
char input[] = "I am a student.";
char expected[] = "student. a am I";
Test("Test1", input, expected);
}
// ,
void Test2()
{
char input[] = "Wonderful";
char expected[] = "Wonderful";
Test("Test2", input, expected);
}
//
void Test3()
{
Test("Test3", NULL, NULL);
}
// ,
void Test4()
{
Test("Test4", "", "");
}
// ,
void Test5()
{
char input[] = " ";
char expected[] = " ";
Test("Test5", input, expected);
}
int _tmain(int argc, _TCHAR* argv[])
{
Test1();
Test2();
Test3();
Test4();
Test5();
return 0;
}
\ # Coding 1 시간, Copying 1 초.메 시 지 를 남 겨 서 좋아요 를 눌 러 주세요. 감사합니다 \ #
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
09.문자 / 메모리영역//메모리 영역 스택 데이터 ROM(코드) //읽기전용메모리 문자 char(1),wchar(2) 바이트 . char c = 'a'; wchar_t wc = L'a';...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.