将char与下一个整数的数量相乘

时间:2018-12-01 20:06:50

标签: c

在我开始之前,这是我的第一个问题,英语不是我的母语,并且我是C编程的新手。我搜索了问题,但找不到。我的问题是我该如何打印时间字符串中的下一个整数。

例如:输入:a2b3d4e5fgh               输出:aabbbddddeeeeefgh

谢谢。

EDIT:真正的任务是有一个最多包含30个字符的字符串,当只有带有字符的字符串时,它只打印输入,但是当有一个带有'分隔的字符部分时,它必须包含字符和整数,并且这些字符必须打印下一个整数的数量。

样本输入1:

cairo_image_surface_create

示例输出1:

abcdefg

样本输入2:

abcdefg

示例输出2:

'a2b3c2d2'efg

我在这里

aabbbccddefg

1 个答案:

答案 0 :(得分:0)

请确保此问题需要集中精力。我不太擅长C语言,但是我可以提出一些可以用来实现这一目标的逻辑。我还将提供一个Java代码示例,我确信它可以轻松转换为C。

  1. 已通过用户输入或使用默认值初始化了字符串:

String data = "m3bdfg21tehy4h"; String newData="";

  1. 声明一个变量,该变量将存储最后一个非数字字符的位置,假设第一个字符必须是字母:

int lastNonDigitPosition=0;

  1. 声明一个布尔变量,该变量将使您知道最后验证的字符是数字还是非数字:

Boolean isLastCharDigit=false;

  1. 声明一个变量,如果我们一次可以有1个以上的数字,则它将存储数字序列:

String digitSequence="";

  1. 将字符串/字符序列转换为字符数组 char[] chars=data.toString().toCharArray();

  2. 验证给定位置上的每个字符

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语言就可以了,那么我试图解释使代码更易于理解的逻辑。