问题描述:输入数据仅包含一组测试样例,对于每组测试案例,共有两行输入数据,输入第一行代表要处理的字符串s1(不超过50),输入第二行代表替换的字符串s2(不超过10).
样例输入:
You are the best
123
To be NO.1
Yes
Thank you very much
%%%
样例输出:
You1234are1234the1234best
ToYesbeYesNO.1
Thank%%%you%%%very%%%much
解题思路:可以参阅《剑指offer》P46页替换空格那道题。
#include <iostream>
using namespace std;
char* replace_blank(char str[], char strB[], int len, int lenB)
{
if(str == NULL || len <= 0) {
return NULL;
}
int i = 0, numberBlanks = 0; // cnt为整个字符串的空格个数,size为字符串字符个数
while(str[i] != '\0') {
if(str[i] == ' ') {
++numberBlanks;
}
++i;
}
for(i = len-1; i >= 0; --i) {
if(str[i] != ' ') {
str[i+numberBlanks*(lenB - 1)] = str[i];
// 测试输出
//char tt = str[i];
//int tmp = i+numberBlanks*(lenB - 1);
//cout << tmp << ": " << tt << endl;
}
else {
for(int j = 0; j < lenB; j++){
str[i+numberBlanks*(lenB - 1) - j] = strB[lenB -1 - j];
// 测试输出
//char tt = strB[lenB -1 - j];
//int tmp = i+numberBlanks*(lenB - 1) - j;
//cout << tmp << ": " << tt << endl;
}
--numberBlanks;
}
}
return str;
}
int main(int argc, const char * argv[]) {
string inputA, inputB;
getline(cin, inputA);
getline(cin, inputB);
int lenA = (int)inputA.length();
int lenB = (int)inputB.length();
char strA[lenA];
char insertedB[lenB];
strcpy(strA, inputA.c_str());
strcpy(insertedB, inputB.c_str());
char* afterInserted = replace_blank(strA, insertedB, lenA, lenB);
cout << afterInserted << endl;
return 0;
}
问题描述:小东和三个小朋友在一起玩小球,他们是一种新玩法。他们站在楼房的不同层,假设小东站在的楼层距离地面N米,球从小东的手里自由落下,每次落地后跳回返回原地面的一半;再落回地下,再反跳回原高度的一半。小东和三个小朋友站在不同的楼层,同时放下手中不同的小球,当小球全部落下地面不跳事,求4个小球一共经过了多少米?(数字都为整数)。
输入:
输入4个数字,分别表示四个小球距离地面的高度,所有输入的数字都为整数,范围不能超过整数所能表示的最大值。
输出:
输出为4个小球经过的总长度
样例输入:
100 90 80 70
样例输出:
996
解题思路:这道题只要不是等比数列取极限定势思维先入为主,并且注意到了数字都为整数这条信息,就非常非常容易做了,当时做的时候真坑,没注意到数字都为整数,然后陷入等比数列取极限的坑。下面是自己写的参考代码:
int ballDistance(int h){
int sumH = h;
int halfH = (int)h/2.0;
while(halfH != 0){
sumH = sumH + 2*halfH;
halfH = (int)halfH/2.0;
}
return sumH;
}
int main(int argc, const char * argv[]) {
int t1, t2, t3, t4;
cin >> t1 >> t2 >> t3 >> t4;
int sum = ballDistance(t1) + ballDistance(t2) + ballDistance(t3) + ballDistance(t4);
cout << sum << endl;
return 0;
}