`
he91_com
  • 浏览: 411252 次
文章分类
社区版块
存档分类
最新评论

编程挑战:字符串的完美度

 
阅读更多

题目详情

我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同,

而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。

现在给定一个字符串,输出它的最大可能的完美度。

例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。

函数头部

C

int perfect(const char *s);

C++

int perfect(const string &s);

java

public static int perfect(String s);

第一次挑战失败,发现是审题的问题,需要的是最大的完美度。而我没有考虑到这个,要命呀!代码已经修改好, 源码如下:
#include <iostream>
#include <string>

using namespace std;

int perfect(const string &s);

int main()
{
	
	while (true)
	{
		string str;
		cout << "Please enter the characters : ";
		cin >> str;

		if (str == "0") break;

		int result = perfect(str);

		cout << "perfect result of " << result << endl;
	}
	return 0;
}


int perfect(const string &s)
{
	int ia = (int)'a';	// 97
	int iA = (int)'A';	// 65

	int perfectNum = 0;
	string content = s;

	int config[26] = {0};
	
	//  获取字符的记录个数
	while (content.size())
	{
		char ch = content[0];
		while (true)
		{
			int index = content.find(content[0]);
			if (index < 0) break;
			if ((int)content[0] < ia)
			{
				// 大写内容
				config[(int)content[0] - iA] ++;
			}
			else
			{
				config[(int)content[0] - ia] ++;
			}
			
			content.erase(index, 1);
		}
	}
	
	// 将个数进行排序
	int i,j,t;
	for(i=0;i<25;i++)
	{
		for(j=0;j<25-i;j++)
		{
			if(config[j+1]>config[j])
			{
				t=config[j+1];
				config[j+1]=config[j];
				config[j]=t;
			}
		}
	}

	// 开始进行最大幸福数计算
	for(int i = 0, momey = 26; i < 26; i ++, momey --)
	{
		perfectNum += config[i]*momey;
	}
	
	return perfectNum;
}

不知对错带指正,仅供交流!


以后要切记好好审题哦……
仅此一次,下次再不会在没有结束挑战之前放代码了。




分享到:
评论

相关推荐

    C/C++ 程序设计员应聘常见面试笔试试题深入剖析

    完美的实现应包括对输入参数的断言检查和对空字符串的处理。 通过分析这些面试题,不仅能够检验面试者的编程基础,还能促使他们在解决实际问题时更加注重代码的健壮性和效率。因此,对于C/C++程序员来说,不断地...

    C_C++常见面试题深入剖析

    从给定的文件内容来看,文章深入探讨了C/C++编程语言中常见的面试题,尤其聚焦于字符串处理函数`strcpy`以及内存管理相关的错误。以下是对文中知识点的详细解析: ### 1. 字符串复制函数`strcpy`的深度剖析 #### ...

    C/C 程序设计员应聘常见面试试题

    同样,对于`strlen`函数,一个完美的实现需要考虑字符串的结束标志,并确保输入参数的安全性。通过阅读和理解不同分数的`strcpy`实现,读者可以自我挑战,尝试编写一个满分的`strlen`函数。 三、总结 C/C++面试...

    C/C++程序设计员面试试题深入剖析

    此外,对于strlen函数的完美实现,我们需要确保处理空字符串的情况,添加对输入参数非NULL的断言,并正确计算包含终止符'\0'的字符串长度。这样,我们就能编写出既高效又安全的strlen函数。 通过这样的分析,我们不...

    C,C++程序员应聘常见面试试题剖析(超级详细解析).doc

    完美的`strlen`函数应该能够正确计算字符串的长度,不包括终止符'\0'。一个完整的实现可能如下: ```c int strlen(const char *str) { int length = 0; while (*str++) { length++; } return length; } ``` ...

    开发语言判断器,可以判断是那种语言开发的程序

    3. **魔法字符串**:某些编程语言在编译或执行时会生成特定的“魔法字符串”,如Python的`#!/usr/bin/env python`。判断器会搜索这些字符串以确定语言。 4. **字节码和二进制签名**:对于编译后的代码,如Java的....

    前端项目-hack-font.zip

    其次,Hack字体在设计时考虑了多语言支持,特别是对Unicode字符集的覆盖,这使得它能够完美显示各种编程语言中的非ASCII字符,包括C++、Java、Python等的注释和字符串内容。同时,它还优化了常见编程语言中的关键字...

    吉林大学 ACM 源代码

    - **TRIE树**:多叉与左儿子右兄弟两种实现方式,用于字符串匹配与存储。 - **后缀数组**:提供了两种不同时间复杂度的实现方式,分别为O(N*logN)与O(N)。 - **RMQ算法**:离线与在线两种实现方式,用于求解区间内的...

    大地正算VB源码

    在VB中,可以使用`CDbl`函数将字符串转换为双精度浮点数,然后使用数学函数如`Atn`和`Sin`进行角度到弧度的转换。 2. **椭球参数设置**:根据实际需求选择合适的椭球参数,这些参数会存储在变量中,如`a`和`b`,并...

    C#微软培训资料

    编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越...

    The Hg HTML Generation Library-开源

    相比传统的字符串拼接或模板引擎,Hg库允许更精确的控制和更低的出错概率,因为它避免了手动处理字符串时可能出现的格式错误和遗漏问题。 除了HTML的生成,Hg库还具备HTML解析的功能。这一特性使得开发者可以方便地...

    数据分析师面试试题汇总.docx

    SQL虽然支持基本的字符串匹配操作,但对于复杂的匹配需求,可能需要使用Python等高级语言。 #### 11. 缺失数据处理 - **知识点**: 缺失值填充、数据插补 - **详细说明**: 常见的缺失值处理方法包括删除含有缺失值的...

    iPhone IOS Hacker Handbook

    例如,栈溢出、堆溢出、格式化字符串漏洞等都是常见的利用方式。了解这些漏洞的特点有助于开发者编写更安全的代码。 #### 理解iOS系统分配器 系统分配器负责管理内存的分配和回收。理解其工作原理可以帮助开发者...

Global site tag (gtag.js) - Google Analytics