特殊的翻译

小明的工作是对一串英语字符进行特殊的翻译:当出现连续且相同的小写字母时,须替换成该字母的大写形式,在大写字母的后面紧跟该小写字母此次连续出现的个数;与此同时,把连续的小写字母串的左侧和右侧的字符串交换位置;重复该操作,直至没有出现连续相同的小写字母为止。现在小明想请你帮他完成这种特殊的翻译。

输入格式

输入一串由小写字母构成的字符串。(字符串长度不大于250)

输出格式

输出翻译后的字符串

输入样例

lodnkmgggggggoplerre

输出样例

eG7lodnkmR2ople

Part1 题目分析

该题是一道字符串运用相关的问题,主要的难点在于如何实现题述的每个操作。

我们可以先来概括一下实现的步骤:

1.在读入的字符串中查找相同且连续的小写字母,并记录个数

2.将连续的小写字母替换成单个对应的大写字母

3.将统计的个数转化成字符型

4.求出相同字符前后子串并交换

5.重复以上步骤直到字符串不再发生变化为止。

由于这里如果运用字符数组来模拟会比较繁琐,所以我采用了C++的sting类型,通过运用其中的成员函数来降低模拟难度。

Part2 代码

(1)重复个数整型转化为字符型



(2)字符串处理



(3)完整代码

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
void sovle(unsigned char *a,int sum){
int m,n,t;
m=sum/100;
n=sum/10%10;
t=sum%10;
if(m!=0){
a[0]=m+48;
a[1]=n+48;
a[2]=t+48;
}
else{
if(n!=0){
a[0]=n+48;
a[1]=t+48;
}
else a[0]=t+48;
}
}
string ans(string s1){
string s2,s3;
unsigned char count[4];int sum;
memset(count,0,sizeof(count));
sum=1;
for(int i=0;i<s1.length()-1;i++){
while(s1[i]==s1[i+1]&&s1[i]>='a'&&s1[i]<='z'){
sum++;
i++;
}
if(sum>1){
s1[i-sum+1]-=32;
s2=s1.substr(0,i-sum+1);
s3=s1.substr(i+1);
s1.replace(i+1,s1.length()-i-1,s2);
sovle(count,sum);
s1.replace(i-sum+2,sum-1,(char *)count);
s1.replace(0,i-sum+1,s3);
}
if(sum>1) return s1;
}
return s1;
}
int main(){
string s1,s2,temp;
cin>>s1;
s2=ans(s1);
while(s1.compare(s2)!=0){
s1=ans(s2);
temp=s1;
s1=s2;
s2=temp;
}
cout<<s1;
}

Part3 总结

  这题在解题过程中还是遇到不少问题,比如在没有限定条件之前,连续的数字也会被错判成连续的字母并处理;还有就是由于处理并调换子串的时候,字符的位置和长度会发生改变,所以字符替换的次序上一不小心就会出错。通过这道题,我学习巩固了C++ string类的相关知识,了解到了更多有关string类的用法,还是收获良多的。

string类运用:特殊的翻译的更多相关文章

  1. java里String类为何被设计为final

    前些天面试遇到一个非常难的关于String的问题,"String为何被设计为不可变的"?类似的问题也有"String为何被设计为final?"个人认为还是前面一 ...

  2. JAVA中的String类(详解)

    Java.lang.String类是final类型的,因此不可以继承这个类.不能修改这个类.String是一个类不属于基本数据类型. 可以从源码中看到,String是一个final类型. String ...

  3. 逐步解读String类(一)

    一句题外话 面试刚入行的Java新手,侧重基础知识:面试有多年工作经验的老鸟,多侧重对具体问题的解决策略. 从一类面试题说起 考察刚入行菜鸟对基础知识的掌握程度,面试官提出关于String类的内容挺常 ...

  4. java问题解读,String类为什么是final的

    一.理解final 望文生义,final意为“最终的,最后的”,我理解为“不能被改变的”,它可以修饰类.变量和方法. 所以我是否可以理解为被它所修饰的类.变量和方法都不能被改变呢?答案是”是“,因为有 ...

  5. String类的特点和使用步骤

    概述 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 类 String 中包括用于检查各个字符串的 ...

  6. Java 1.7.0_06中String类内部实现的一些变化【转】

    原文链接: java-performance 翻译: ImportNew.com- 夏千林译文链接: http://www.importnew.com/7656.html ChangeLog: 201 ...

  7. java基础源码 (1)--String类

    这个是String类上面的注释,我用谷歌翻译翻译的,虽然有点语法上的问题,但是大概都可以翻译出来 /** * The {@code String} class represents character ...

  8. 来说说Java中String 类的那些事情

    今天正好学校那边的任务不多,我就打算把Stirng 的有关知识点都总结在一起了,这样有利于知识的系统性,要不然学多了就会越来越杂,最主要的是总会忘记,记忆的时间太短了,通过这种方式,把它归纳在一起,写 ...

  9. 《Java从入门到失业》第四章:类和对象(4.2):String类

    4.2String类 这一节,我们学习第一个类:String类.String翻译成汉语就是“字符串”,是字符的序列.我们知道,在Java中,默认采用Unicode字符集,因此字符串就是Unicode字 ...

随机推荐

  1. P7323-[WC2021]括号路径【并查集,启发式合并】

    正题 题目链接:https://www.luogu.com.cn/problem/P7323 题目大意 给出\(n\)个点的一张有向图.每个边\((u,v,w)\)表示\(u->v\)有一个类型 ...

  2. NOIP 模拟八 考试总结

    T1星际旅行 给出n个点,m条边,求满足一条路径使得m-2条边经过2次,2条边经过1次的方案数.并且题目中给出有自环. 看到题面我以为是个计数DP,可能是计数题做多了吧哈哈.其实仔细朝图的方向想一想就 ...

  3. C++学习笔记:08 多态性

    课程<C++语言程序设计进阶>清华大学 郑莉老师) 基本概念 多态性 具体的讲,在面向对象程序设计中,指同样的方法被不同对象执行时会有不同的执行效果. 多态的实现 绑定机制 绑定是将一个标 ...

  4. Java面向对象编程(三)

    static关键词 static关键字:可以修饰属性.方法.代码块.内部类. 一.使用static修饰属性:静态变量(或类变量) 1. 属性,按是否使用static修饰,又分为:静态属性 vs 非静态 ...

  5. 从零入门 Serverless | 在线应用的 Serverless 实践

    作者 | 唐慧芬(黛忻) 阿里云产品专家 导读:毫无疑问,Serverless 能够在效率和成本上给用户带来巨大收益.那具体到落地又应该怎么做呢?本文就给大家详细解读 Serverless 的落地实践 ...

  6. L1-017 到底有多二 (15 分) java解题

    1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String args[]){ 5 doub ...

  7. Docker--harbor私有仓库部署与管理

    目录 一.Harbor简介 二.Harbor 部署 三.维护管理Harbor  一.Harbor简介 1.什么是Harbor  ? Harbor 是 VMware 公司开源的企业级 Docker Re ...

  8. (课内)信安数基RSA-level3-5

    emmmm感觉其实自己对这个的理解完全不够,原理只能写出这么个东西(悲) 代码完全是 攻击方式中(1)(2)内容的实现. lambda是一种可以理解为匿名函数的写法:写在这里看起来很酷炫(bushi) ...

  9. vue3.x新特性之setup函数,看完就会用了

    最近有小伙伴跟我聊起setup函数,因为习惯了vue2.x的写法导致了,setup用起来觉得奇奇怪怪的,在一些api混编的情况下,代码变得更加混乱了,个人觉得在工程化思想比较强的团队中使用setup确 ...

  10. 航胥:北航教务助手——Alpha阶段发布声明

    本软件项目为北京航空航天大学2020年"软件工程"课程项目 v1.0.5版本下载地址:https://bhpan.buaa.edu.cn:443/#/link/D10B71B69E ...