[ad_1]
Eg 1: Input: a1b10 Output: abbbbbbbbbb Eg: 2: Input: b3c6d15 Output: bbbccccccddddddddddddddd The number varies from 1 to 99.
私が試したこと:
Java
static void printCharSeq(char c, int num) { while (num > 1) { System.out.print(c); num--; } } void convert(String str) { char c[] = str.toCharArray(); for (int i = 0; i < c.length; i++) { int val = 0; if ((c[i] >= '0' && c[i] <= '9')) { // val=c[i]-48; try { if (c[i + 1] >= '0' && c[i + 1] <= '9') { String a1 = String.valueOf(c[i] - 48); String a2 = String.valueOf(c[i + 1] - 48); val = Integer.parseInt(a1 + a2); // System.out.println(val); printCharSeq(c[i - 1], val); i++; } else { val = c[i] - 48; printCharSeq(c[i - 1], val); } } catch (ArrayIndexOutOfBoundsException ex) { val = c[i] - 48; printCharSeq(c[i - 1], val); } } else { System.out.print(c[i]); // printCharSeq(c[i], val); } } }
Here This logic works perfectly but when i try to input : v99t100cvrx2 Output : vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvttttttttttcvrxx it prints t 10 times too. i don't know ether it is correct or wrong. please help me to find it out the logic is correct for different inputs.
解決策 1
引用:t も 10 回出力します。 それが正しいか間違っているかはわかりません。
次のようにも述べているので、正しいと思います。
引用:番号は 1 ~ 99 です。
コードが 2 桁のみの数字を扱うと仮定しましょう。
2 桁以上が必要な場合は、それに応じてコードを変更する必要があります。
1 桁を処理するコードと 2 桁を処理するコードを用意するのではなく、ループを使用します。
Eg 1: Input: a1b10 Output: abbbbbbbbbb
このコーディングはRLEランレングスエンコーディングです
ランレングス エンコーディング – ウィキペディア[^]
解決策 2
一連の数字を整数値に変換するには、次のような単純なループが必要です。
Set value = 0 For each character: if character is a number: set tempval = character - '0' multiply value by 10 add tempval to value else: print the current character value times // continue with the remaining processing.
解決策 3
以下のコードは、指定された数値の文字シーケンスの完全なコードであり、制限が 1 ~ 99 の間であり、制限を超えていない場合は、数字の最初の 2 桁を取ります。
たとえば、それぞれの文字を 100=10 回印刷する場合、このプログラムは配列の位置に基づいています。そうしないと、コード全体が台無しになることを考慮する必要があります。
Java
import java.util.Scanner; class CharSequence { static void PrintSeq(char c, int num) { while (num > 1) { System.out.print(c); num--; } } static void ToConvert(String str) { char c[] = str.toCharArray(); for (int i = 0; i < c.length; i++) { int val = 0; if ( c[i] >= '0' && c[i] <= '9' ) { try { if ( c[i + 1] >= '0' && c[i + 1] <= '9' ) { //Used to print more than 9 values String a1 = String.valueOf(c[i] - 48); String a2 = String.valueOf(c[i + 1] - 48); val = Integer.parseInt(a1 + a2); PrintSeq(c[i - 1], val); i++; } else { //Used to print 0-9 values val = c[i] - 48; PrintSeq(c[i - 1], val); } } catch (ArrayIndexOutOfBoundsException ex) { val = c[i] - 48; PrintSeq(c[i - 1], val); } } else { System.out.print(c[i]); } } } public static void main(String args[]) throws Exception { Scanner s=new Scanner(System.in); String wrd=s.nextLine(); ToConvert(wrd); } }
[ad_2]
コメント