字符串加一处理

要求描述

一串包含小写字母和数字的混合字符串进行n次加一操作。
例:“zz”+1 = “111”、“aa”+1 = “ab”、“az”+1 = “b1”、“a9”+1 = “ba”

C++程序清单

#include<iostream>
#include<string>
using namespace std;
int main()
{
    
    
	string str,s;//str包含小写字母和数字 
	int n;//n次+1
	int flag=0;//有进位情况为1 
	int flag_nums=0;//进位的次数
	while( true )
	{
    
    
		cin>>str>>n;
		s = str;
		if( str=="over" )
		return 0;
		flag_nums=0;
		for( int i=1; i<=n; i++ )
		{
    
    
			flag = 0;
			flag_nums = 0;
			for( int j=str.size()-1; j>=0; j-- )
			{
    
    
				if( flag==1 || j==str.size()-1  )//flag=1表明有进位情况出现,j=str.size()-1为最后一位加1情况 
				{
    
    
					if( (int)str[j]+1 > 122/*z*/ )//'z'+ 1的情况 
					{
    
    
						flag_nums++;
						flag = 1;
						str[j] = '1';
						if( flag_nums == str.size() )//有str.size()次进位 则str串增长 例:"zz"+1 ="111" 
						{
    
    
							cout<<"源串为 "<<s<<"的第"<<i<<"次+1结果为 "<<"1"+str<<endl;
							str = "1"+str;
						}
					}
					else if( (int)str[j]+1 == 58 /*9 of ascii value is 57*/ )//'9' + 1的情况
					{
    
    
						flag = 0;
						str[j] = (char)( ((int)str[j])%57 + (int)'a' );
						cout<<"源串为 "<<s<<"的第"<<i<<"次+1结果为 "<<str<<endl;
					}
					else//'1'~'8' and 'a'~'y'
					{
    
    
						flag = 0;
						str[j] = (char)((int)str[j]+1);
						cout<<"源串为 "<<s<<"的第"<<i<<"次+1结果为 "<<str<<endl;
					}
				}
			}
		}
	}
}

运行结果

zz 15
源串为 zz的第1+1结果为 111
源串为 zz的第2+1结果为 112
源串为 zz的第3+1结果为 113
源串为 zz的第4+1结果为 114
源串为 zz的第5+1结果为 115
源串为 zz的第6+1结果为 116
源串为 zz的第7+1结果为 117
源串为 zz的第8+1结果为 118
源串为 zz的第9+1结果为 119
源串为 zz的第10+1结果为 11a
源串为 zz的第11+1结果为 11b
源串为 zz的第12+1结果为 11c
源串为 zz的第13+1结果为 11d
源串为 zz的第14+1结果为 11e
源串为 zz的第15+1结果为 11f
1x 15
源串为 1x的第1+1结果为 1y
源串为 1x的第2+1结果为 1z
源串为 1x的第3+1结果为 21
源串为 1x的第4+1结果为 22
源串为 1x的第5+1结果为 23
源串为 1x的第6+1结果为 24
源串为 1x的第7+1结果为 25
源串为 1x的第8+1结果为 26
源串为 1x的第9+1结果为 27
源串为 1x的第10+1结果为 28
源串为 1x的第11+1结果为 29
源串为 1x的第12+1结果为 2a
源串为 1x的第13+1结果为 2b
源串为 1x的第14+1结果为 2c
源串为 1x的第15+1结果为 2d
over 2

--------------------------------
Process exited after 30.74 seconds with return value 0
请按任意键继续. . .

猜你喜欢

转载自blog.csdn.net/weixin_47700137/article/details/121254263
今日推荐