0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Java】部分文字列を抜き出す(AOJ13 - シャッフル)

Posted at

文字列から部分文字列を抜き出す

  • Stringクラスのsubstringメソッド
  • 第一引数に抜き出し開始の位置を設定
public class Main {
	public static void main(String[] args) {
    String str = "ねこはなんでこんなにMOFUいんでしょうか";
    //10~14文字目まで抜き出す
    String mofu= str.substring(10,15);
    //山崎を表示
    System.out.println(mofu); //MOFUい
    }
}

シャッフル(ITP1-9)

1つのアルファベットが描かれた n 枚のカードの山をシャッフルします。
1回のシャッフルでは、下から h 枚のカードをまとめて取り出し、それを残ったカードの山の上に積み上げます。
カードの山は以下のように1つの文字列で与えられます。
abcdeefab
最初の文字が一番下にあるカード、最後の文字が一番上にあるカードを示しています。
例えば、これを h が 4 でシャッフルすると、最初の4文字 abcd が、残りの文字 eefab の末尾へ連結されるので以下のようになります:
eefababcd
このシャッフルを何回か繰り返します。
カードの山の最初の並び(文字列)と h の列を読み込み、最後の並び(文字列)を出力するプログラムを作成して下さい。
Input
複数のデータセットが入力として与えられます。各データセットは以下の形式で与えられます:
最初の並びを表す文字列
シャッフル回数 m
h1
h2
.
.
hm
最初の並びを表す文字列が "-" のとき入力の終わりとします。
Output
各データセットに対して、最後の並び(文字列)を1行に出力して下さい。

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		while (true) {
			String a = scanner.next();
			if (a.equals("-")) {
				break;
			}
			int b = scanner.nextInt();
			//b行分の合計値を計算
			int sum = 0;
			for (int i = 0; i < b; i++) {
				sum += scanner.nextInt();
			}
			System.out.println(sum); //7
			System.out.println(a); //vwxyz 5
			//2倍 にする
			String c = a + a; //vwxyzvwxyz
            //System.out.println(c);
            
            /*文字列aの文字を一文字ずつ、(sum/文字列)のあまり分だけ左に動かしたい
            substringメソッド
			開始位置:(sum/文字列a長さ)のあまり 7/5=1...2   2
			終了位置:(sum/文字列a長さ)のあまり+文字列a長さ 2+5=9
			*/
			System.out.println(c.substring(sum % a.length(), sum % a.length() + a.length()));
		}
	}
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?