JZ-C-42-Plus

剑指offer第四十二题-拓展:左旋转字符串:左旋转操作是把字符串前面的若干个字符转移到字符串的尾部,如输入"abcdefg"和数字2,左旋转2位后为:"cdefgab"

  1 //============================================================================
  2 // Name        : JZ-C-42-Plus.cpp
  3 // Author      : Laughing_Lz
  4 // Version     :
  5 // Copyright   : All Right Reserved
  6 // Description : 左旋转字符串:左旋转操作是把字符串前面的若干个字符转移到字符串的尾部,如输入"abcdefg"和数字2,左旋转2位后为:"cdefgab"
  7 //============================================================================
  8
  9 #include <iostream>
 10 #include <stdio.h>
 11 #include "StringUtil.h"
 12 #include <string.h>
 13 using namespace std;
 14
 15 char* LeftRotateString(char* pStr, int n) {
 16     if (pStr != NULL) {
 17         int nLength = static_cast<int>(strlen(pStr));
 18         if (nLength > 0 && n > 0 && n < nLength) {
 19             char* pFirstStart = pStr;
 20             char* pFirstEnd = pStr + n - 1;
 21             char* pSecondStart = pStr + n;
 22             char* pSecondEnd = pStr + nLength - 1;
 23             // 翻转字符串的前面n个字符
 24             Reverse(pFirstStart, pFirstEnd);
 25             // 翻转字符串的后面部分
 26             Reverse(pSecondStart, pSecondEnd);
 27             // 翻转整个字符串
 28             Reverse(pFirstStart, pSecondEnd);
 29         }
 30     }
 31
 32     return pStr;
 33 }
 34
 35 // ====================测试代码====================
 36 void Test(char* testName, char* input, int num, char* expectedResult) {
 37     if (testName != NULL)
 38         printf("%s begins: ", testName);
 39
 40     char* result = LeftRotateString(input, num);
 41
 42     if ((input == NULL && expectedResult == NULL)
 43             || (input != NULL && strcmp(result, expectedResult) == 0))
 44         printf("Passed.\n\n");
 45     else
 46         printf("Failed.\n\n");
 47 }
 48
 49 // 功能测试
 50 void Test1() {
 51     char input[] = "abcdefg";
 52     char expected[] = "cdefgab";
 53
 54     Test("Test1", input, 2, expected);
 55 }
 56
 57 // 边界值测试
 58 void Test2() {
 59     char input[] = "abcdefg";
 60     char expected[] = "bcdefga";
 61
 62     Test("Test2", input, 1, expected);
 63 }
 64
 65 // 边界值测试
 66 void Test3() {
 67     char input[] = "abcdefg";
 68     char expected[] = "gabcdef";
 69
 70     Test("Test3", input, 6, expected);
 71 }
 72
 73 // 鲁棒性测试
 74 void Test4() {
 75     Test("Test4", NULL, 6, NULL);
 76 }
 77
 78 // 鲁棒性测试
 79 void Test5() {
 80     char input[] = "abcdefg";
 81     char expected[] = "abcdefg";
 82
 83     Test("Test5", input, 0, expected);
 84 }
 85
 86 // 鲁棒性测试
 87 void Test6() {
 88     char input[] = "abcdefg";
 89     char expected[] = "abcdefg";
 90
 91     Test("Test6", input, 7, expected);
 92 }
 93
 94 int main(int argc, char** argv) {
 95     Test1();
 96     Test2();
 97     Test3();
 98     Test4();
 99     Test5();
100     Test6();
101
102     return 0;
103 }
时间: 2024-10-29 20:01:36

JZ-C-42-Plus的相关文章

Kotlin 的现状和未来

Andrey Breslav,Kotlin 项目负责人,今天他以一个工具开发者和工具生态系统的角度来给我们介绍 Kotlin 的概况.然后他会讲讲未来和他们下个版本的一些信息. 我的名字叫 Andrey,我在 JetBrains 带领着 Kotlin 团队.今天我来和大家聊聊我们现在的状态和未来的计划. 这篇演讲不是 Kotlin 的入门介绍.如果你想学习 Kotlin,到处都能找到学习的资源.这里有一个 语言参考,教程,演讲视频 .试试我们的 mini-IDE ,Kotlin Koans 是一

django之创建第4-2个项目-访问class类属性和类方法

1.修改index <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>django之创建第4-2个项目</title> </head> <body> <h1>hello,{{test.name}}</h1> <!--模板 变量用变量定义--> &l

42. 蛤蟆的数据结构笔记之四十二图的遍历之广度优先

42. 蛤蟆的数据结构笔记之四十二图的遍历之广度优先 本篇名言:"生活真象这杯浓酒 ,不经三番五次的提炼呵 , 就不会这样一来可口 ! -- 郭小川" 继续看下广度优先的遍历,上篇我们看了深度遍历是每次一个节点的链表是走到底的. 欢迎转载,转载请标明出处:http://write.blog.csdn.net/postedit/47029275 1.  原理 首先,从图的某个顶点v0出发,访问了v0之后,依次访问与v0相邻的未被访问的顶点,然后分别从这些顶点出发,广度优先遍历,直至所有的

42步进阶学习—让你成为优秀的Java大数据科学家!

作者 灯塔大数据 本文转自公众号灯塔大数据(DTbigdata),转载需授权 如果你对各种数据类的科学课题感兴趣,你就来对地方了.本文将给大家介绍让你成为优秀数据科学家的42个步骤.深入掌握数据准备,机器学习,SQL数据科学等. 本文将这42步骤分为六个部分, 前三个部分主要讲述从数据准备到初步完成机器学习的学习过程,其中包括对理论知识的掌握和Python库的实现. 第四部分主要是从如何理解的角度讲解深入学习的方法.最后两部分则是关于SQL数据科学和NoSQL数据库. 接下来让我们走进这42步进

Win32 汇编 - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

跳转指令分三类:一.无条件跳转: JMP;二.根据 CX.ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转).JECXZ(ECX 为 0 则跳转);三.根据 EFLAGS 寄存器的标志位跳转, 这个太多了. 根据标志位跳转的指令: JE ;等于则跳转 JNE ;不等于则跳转 JZ ;为 0 则跳转 JNZ ;不为 0 则跳转 JS ;为负则跳转 JNS ;不为负则跳转 JC ;进位则跳转 JNC ;不进位则跳转 JO ;溢出则跳转 JNO ;不溢出则跳转 JA ;无符号大于则跳转 JNA

Codeforces679E. Bear and Bad Powers of 42

传送门 今天子帧的一套模拟题的T3. 考试的时候其实已经想到了正解了,但是一些地方没有想清楚,就没敢写,只打了个暴力. 首先考虑用线段树维护区间信息. 先把每个值拆成两个信息,一是距离他最近的且大于他的$42$的整次幂,而是到距离他最近的且大于他的$42$的整次幂的距离. 操作1和操作2不需要细说. 对于操作3,每次加入一个数后check整棵线段树的Min,如果出现负数就逐个升级.如果出现了0就再次增加,直到不出现0为止. 因为每个数最多升级$logN$次,所以时间上是没有问题的. 另一个小细节

连续更新了42天早报之后

在已经过去的2016年 11.12月份,我在微信朋友圈上每天早上9:30之前更新一则早报,每则早报共11条,其中1-10条为最新的国际.社会资讯,第10条为文艺范文字.诸如以下类型: 11月24日早!读报时间: 1.外媒:惊叹中国30年内消灭极度贫困:曾是世界最穷国 2.美媒:中国经销商阻奥迪上汽联姻 索数千亿赔偿 3.求学:陆生赴台求学骤减16% 若非理想学校就放弃 4.德媒:中国人吃肉增多不仅影响健康 导致全球变暖 5.统计:中国家庭财富缩水至23万亿美元 全球排名第三 6.消息:香港迪士尼

20135206于佳心-家庭作业6.31,家庭作业6.42

6.31 A.E=4,B=4,S=8 所以C=E*B*S=128 B. 6.42 读总数为2912 不命中的读总数为728 不命中率为25%

纂篆我跟你不合适就像37码的鞋碰上了42码的脚一样不合适不怪鞋也不怪脚

赘专注左拙桩撞兹阻 我跟你不合适就像37码的鞋碰上了42码的脚一样不合适不怪鞋也不怪脚.. http://passport.baidu.com/?business&un=vip&un=%5F%E6%B8%85%E6%B5%A6%E6%8C%89%E6%91%A9%E7%BE%8E%E5%A5%B3%5F#0 http://passport.baidu.com/?business&un=vip&un=%5F%E8%BF%9E%E4%BA%91%E6%8C%89%E6%91%A

《Entity Framework 6 Recipes》中文翻译系列 (42) ------ 第八章 POCO之使用POCO

翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第八章 POCO 对象不应该知道如何保存它们,加载它们或者过滤它们.这是软件开发中熟悉的口头禅,特别是在领域驱动设计中.这是一个聪明的做法,如果对象和持久化绑得太紧,以至于不能对领域对象进行单元测试.重构和复用.在ObjectContext上下对象中,实体框架为模型实体生成的类,高度依赖实体框架管道(Plumbing).对于一此开发人员来说,这些类对持久化机制知道得太多了.而且,它们与特定的