在我开始之前,这是我的第一个问题,英语不是我的母语,并且我是C编程的新手。我搜索了问题,但找不到。我的问题是我该如何打印时间字符串中的下一个整数。
例如:输入:a2b3d4e5fgh 输出:aabbbddddeeeeefgh
谢谢。
EDIT:真正的任务是有一个最多包含30个字符的字符串,当只有带有字符的字符串时,它只打印输入,但是当有一个带有'分隔的字符部分时,它必须包含字符和整数,并且这些字符必须打印下一个整数的数量。
样本输入1:
cairo_image_surface_create
示例输出1:
abcdefg
样本输入2:
abcdefg
示例输出2:
'a2b3c2d2'efg
我在这里
aabbbccddefg
答案 0 :(得分:0)
请确保此问题需要集中精力。我不太擅长C语言,但是我可以提出一些可以用来实现这一目标的逻辑。我还将提供一个Java代码示例,我确信它可以轻松转换为C。
String data = "m3bdfg21tehy4h"; String newData="";
int lastNonDigitPosition=0;
Boolean isLastCharDigit=false;
String digitSequence="";
将字符串/字符序列转换为字符数组
char[] chars=data.toString().toCharArray();
验证给定位置上的每个字符
for (int i=0;i<chars.length;i++)
{
//verify is the current character is not digit
if (!Character.isDigit(chars[i]))
{
if (isLastCharDigit)
{
/*If the last char was a digit, cast the value of digitSequence to integer so you can know how many times you will repeat the character that comes before digit sequence*/
int digitTimes=Integer.valueOf(digitSequence);
//reinitialize the digit sequence
digitSequence="";
for (int j=0;j<digitTimes;j++)
{
//concatenate the last non-digit character to newData digitTimes times
newData+=chars[lastNonDigitPosition];
}
}else{
//if the last char was not a digit just a the character to the String
newData+=chars[i];
}
//save the last non-digit position
lastNonDigitPosition=i;
//inform this current character is not digit
isLastCharDigit=false;
}else{
//if the character is a digit, concatenate with //digitSequence and inform the last char is digit
digitSequence+=chars[i];
isLastCharDigit=true;
}
}
这是解决问题的方法。这是JAVA示例,如果有人可以将其翻译成C语言就可以了,那么我试图解释使代码更易于理解的逻辑。