庞果网之字符串消除

简介:
题目详情

给定一个字符串,仅由a,b,c 3种小写字母组成。当出现连续两个不同的字母时,你可以用另外一个字母替换它,如


  1. 有ab或ba连续出现,你把它们替换为字母c;
  2. 有ac或ca连续出现时,你可以把它们替换为字母b;
  3. 有bc或cb 连续出现时,你可以把它们替换为字母a。


你可以不断反复按照这个规则进行替换,你的目标是使得最终结果所得到的字符串尽可能短,求最终结果的最短长度。


输入:字符串。长度不超过200,仅由abc三种小写字母组成。

输出: 按照上述规则不断消除替换,所得到的字符串最短的长度。


例如:输入cab,输出2。因为我们可以把它变为bb或者变为cc。

          输入bcab,输出1。尽管我们可以把它变为aab -> ac -> b,也可以把它变为bbb,但因为前者长度更短,所以输出1。


/*********************************
*   日期:2013-11-03
*   作者:SJF0115
*   题号: 题目 字符串消除
*   来源:http://hero.pongo.cn/Question/Details?ID=85&ExamID=83
*   结果:AC
*   来源:庞果网
*   总结:
**********************************/
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std; 

int minLength(const char *s){
	int i,len,a = 0,b = 0,c = 0;
	len = strlen(s);
	//统计字符a,b,c个数
	for(i = 0;i < len;i++){
		if(s[i] == 'a'){
			a++;
		}
		else if(s[i] == 'b'){
			b++;
		}
		else if(s[i] == 'c'){
			c++;
		}
	}
	if(a == len || b == len || c == len){
		return len;
	}
	else{
		//判断奇偶性
		a %= 2;
		b %= 2;
		c %= 2;
		if(a + b + c == 0 || a + b + c == 3) 
		{
			return 2; 
		}
		else 
		{
			return 1;
		}	
	}
}

int main()
{   
	char str[201];
	while(scanf("%s",str) != EOF){
		printf("%d\n",minLength(str));
	}
    return 0;
}

【解析】:


目录
相关文章
|
3月前
|
编译器 C# 开发者
C# 10.0中插值字符串的改进:灵活性与性能的双重提升
【1月更文挑战第19天】C# 10.0带来了对插值字符串的显著改进,进一步增强了这一功能的灵活性和性能。插值字符串是C#中处理字符串格式化的一种强大方式,它允许开发者直接在字符串中嵌入变量和表达式。在C# 10.0中,插值字符串不仅获得了语法上的简化,还通过新的编译时优化提高了运行时性能。本文将详细探讨C# 10.0中插值字符串的改进内容,以及这些改进如何为开发者带来更加高效和便捷的编程体验。
|
9月前
|
数据安全/隐私保护
学生系统优化——字符限定
学生系统优化——字符限定
|
4月前
|
人工智能 自然语言处理 Java
想要搞定正则验证字串符?用这个办法最简单,质量还高!
在编程中,字符串的处理是不可避免的一部分。我们经常需要验证用户输入的数据、提取文本信息、替换特定字符等等。在这些场景中,正则验证字串符(Regex Validation)为我们提供了一种高效、灵活的处理方式。
|
7月前
|
PHP 开发者
正则表达式中的【模式修正符】 完美增强字符串处理的能力!
如果你还没有搞懂模式修饰符是什么?那么你必须要看一下这篇文章!!
31 0
正则表达式中的【模式修正符】 完美增强字符串处理的能力!
|
10月前
|
C语言
小符号 大影响
C语言学习bug记录第一弹
|
11月前
|
Python
正则表达式re.sub替换不完整的问题现象及其根本原因
正则表达式re.sub替换不完整的问题现象及其根本原因
75 0
|
算法 Java 测试技术
常见重构技巧 - 去除多余的if else
常见重构技巧 - 去除多余的if else
常见重构技巧 - 去除多余的if else
|
设计模式 JavaScript 前端开发
如何优雅的消除系统重复代码
在程序猿的日常工作中,不仅要跟随业务侧的发展不断开发新的需求,同时也需要维护老的已有平台。无论是开发新需求还是维护老系统,我们都会遇到同样一个问题,系统中总是充斥着很多重复的代码。
29468 11
如何优雅的消除系统重复代码
Kam
|
Java
枚举去除大量if-else if -else优化记录
java中去除大量if-else
Kam
318 1
|
设计模式 Java 程序员
细微之处见真章之字符串超长省略功能
细微之处见真章之字符串超长省略功能
183 0