JZ-C-42

Posted 回看欧洲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JZ-C-42相关的知识,希望对你有一定的参考价值。

剑指offer第四十二题:翻转单词顺序:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变

  1 //============================================================================
  2 // Name        : JZ-C-42.cpp
  3 // Author      : Laughing_Lz
  4 // Version     :
  5 // Copyright   : All Right Reserved
  6 // Description : 翻转单词顺序:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变
  7 //============================================================================
  8 
  9 #include <iostream>
 10 #include <stdio.h>
 11 #include "StringUtil.h"
 12 #include <string.h>
 13 using namespace std;
 14 
 15 char* ReverseSentence(char *pData) {
 16     if (pData == NULL)
 17         return NULL;
 18 
 19     char *pBegin = pData;
 20 
 21     char *pEnd = pData;
 22     while (*pEnd != \0)
 23         pEnd++;
 24     pEnd--;
 25 
 26     // 翻转整个句子
 27     Reverse(pBegin, pEnd);
 28 
 29     // 翻转句子中的每个单词
 30     pBegin = pEnd = pData;
 31     while (*pBegin != \0) {
 32         if (*pBegin ==  ) {
 33             pBegin++;
 34             pEnd++;
 35         } else if (*pEnd ==   || *pEnd == \0) {
 36             Reverse(pBegin, --pEnd);
 37             pBegin = ++pEnd;
 38         } else {
 39             pEnd++;
 40         }
 41     }
 42 
 43     return pData;
 44 }
 45 
 46 // ====================测试代码====================
 47 void Test(char* testName, char* input, char* expectedResult) {
 48     if (testName != NULL)
 49         printf("%s begins: ", testName);
 50 
 51     ReverseSentence(input);
 52 
 53     if ((input == NULL && expectedResult == NULL)
 54             || (input != NULL && strcmp(input, expectedResult) == 0))
 55         printf("Passed.\n\n");
 56     else
 57         printf("Failed.\n\n");
 58 }
 59 
 60 // 功能测试,句子中有多个单词
 61 void Test1() {
 62     char input[] = "I am a student.";
 63     char expected[] = "student. a am I";
 64 
 65     Test("Test1", input, expected);
 66 }
 67 
 68 // 功能测试,句子中只有一个单词
 69 void Test2() {
 70     char input[] = "Wonderful";
 71     char expected[] = "Wonderful";
 72 
 73     Test("Test2", input, expected);
 74 }
 75 
 76 // 鲁棒性测试
 77 void Test3() {
 78     Test("Test3", NULL, NULL);
 79 }
 80 
 81 // 边界值测试,测试空字符串
 82 void Test4() {
 83     Test("Test4", "", "");
 84 }
 85 
 86 // 边界值测试,字符串中只有空格
 87 void Test5() {
 88     char input[] = "   ";
 89     char expected[] = "   ";
 90     Test("Test5", input, expected);
 91 }
 92 
 93 int main(int argc, char** argv) {
 94     Test1();
 95     Test2();
 96     Test3();
 97     Test4();
 98     Test5();
 99 
100     return 0;
101 }

 

以上是关于JZ-C-42的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器