摘要:
题目:输入一个整数n,求1到n这n个整数十进制表示中1出现的次数。举例:输入12,从1到12这些整数中包含1的数字有1, 10, 11,和12,1一共出现了5次。答:#include "stdafx.h"#include <iostream>using namespace std;int Count(int num){ int count = 0; while (num) { if (1 == num % 10) { count++; } num = num /10; } return ... 阅读全文
摘要:
题目:输入一个整数,求该整数的二进制表达中有多少个1。举例:输入10,其二进制表示为1010,有两个1,因此输出2。答:#include "stdafx.h"#include <iostream>using namespace std;//只限于正数(输入负数会陷入死循环)int CountNonnegativeOneNumber(int n){ int count = 0; while (n) { if (n & 1) { count++; } n = n>>1; } return c... 阅读全文
摘要:
题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少种跳法,并分析算法的时间复杂度。答:用一个函数f(n)来表示n级台阶总的跳法。 1、只有1个台阶,则f(1) = 1; 2、有2个台阶,则f(2) = 2; 3、当有n个台阶时,如果第一次跳1级,有f(n-1)种跳法,如果第一次跳2级,有f(n - 2)种跳法,即f(n) = f(n-1) + f(n-2)。即为Fibonacci序列。#include "stdafx.h"#include <iostream>using namespace std;//循环int TotalStep(int 阅读全文
摘要:
题目:定义字符串的左旋转操作,把字符串前面的若干个字符移动到字符串的尾部。要求:对长度为n的字符串操作的时间复杂度为O(n),辅助内存为O(1)。举例:把字符串abcdef左旋转2位得到字符串cdefab。答:#include "stdafx.h"#include <iostream>using namespace std;void swap(char *str, int begin, int end){ char ch; while (begin < end) { ch = *(str + begin); *(str + begin) = *(s... 阅读全文
摘要:
题目:在一个字符串中找到第一个只出现一次的字符。举例:输入abaccdeff,则输出b。答:假设字符占一个字节,则共有256不同的字符,开辟256空间,用查找表。#include "stdafx.h"#include <iostream>using namespace std;void FindFirstOneChar(char *str){ if (NULL == str) { return; } int count[256] = {0}; char *p = str; while (*p != '\0') { count... 阅读全文
摘要:
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内的字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和简单字母一样处理。举例:输入"I am a student.",则输出"student. a am I"。答:每个单词先自我翻转,然后整个句子翻转。#include "stdafx.h"#include <iostream>#include <string>using namespace std;/* 翻转 I am a student. --> student. a am I*/void 阅读全文