中兴笔试题 10/13 passed不知道什么错了

加密字符串:原字符+离单词末尾的距离;
如 abcde加密后eeeee;当然z加一变成a;再如,abcd xyzb变成dddd aaab
 已经保证字符串为小写字母,单词间隔为一个空格。
 char* encryp(char* str)
{
	if (str == NULL) return NULL;
	int len = strlen(str);
	char *result = new char[len + 1];
	result[len] = '\0';
	int dis = 0;
	for (int i = len - 1;i >= 0;i--)
	{
		if (str[i] == ' ')
		{			dis = 0;
			result[i] = ' ';
		}
		else
		{
			if (str[i] + dis > 'z')
				result[i] = str[i] + dis - 'z' + 'a' - 1;
			else
				result[i] = str[i] + dis;
			dis++;		}
	}
	return result;
}

#中兴#
全部评论
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <vector> #include <string> #include <stdlib.h> #include <stdio.h> using namespace std; //题目要求: /******************************************************** 加密字符串:原字符+离单词末尾的距离; 如 abcde加密后eeeee;当然z加一变成a;再如,abcd xyzb变成dddd aaab 已经保证字符串为小写字母,单词间隔为一个空格。 *****************************************************************/ int main() { string str; while (cin >> str) { for (int i = 0; i < str.length(); i++) { if (str[i] + str.length() - i - 1 <= 'z') printf("%c",str[i] + str.length() - i - 1); else printf("%c", 'a'); } cout << endl; } }
点赞 回复 分享
发布于 2016-09-07 15:54
我是减去的26,应该对26取余。。。。。。。。。。。。
点赞 回复 分享
发布于 2016-08-31 23:01
我也是,。。。
点赞 回复 分享
发布于 2016-08-31 23:00
dis有可能大于26,也就是有可能有一个很长的单词,超过26大小,所以有这种情况 , 应该加上一个 dis %= 26. 我开始也是10\13,考虑到这种情况就OK了
点赞 回复 分享
发布于 2016-08-31 18:49

相关推荐

xwqlikepsl:感觉很厉害啊,慢慢找
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-01 13:13
ecece:这么明目张胆虚报就业率啊
点赞 评论 收藏
分享
评论
点赞
11
分享

创作者周榜

更多
牛客网
牛客企业服务