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?

[tips][Java] atcoderでよく使用する処理まとめ

Last updated at Posted at 2024-12-24

cppとjavaを比較しながら、よくある処理をまとめます。

文字列操作系

文字列操作に便利なtips。

文字列操作するときに、Stringクラスのメソッドを使用するか、Stringをchar[]型に変換して操作するかをパッと見極めて処理書くためのtips。

文字列Stringの読み取り

Scanner sc = new Scanner(System.in);
String str = sc.next();

文字charの読み取り

Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);

文字操作

特定の条件で文字を置き換えたりする場合。
インデックス指定での置き換えはchar[]に変換するのが便利。

文字列Stringを文字配列char[]に変換

String S = sc.next();
char[] charArray = S.toCharArray();

文字配列char[]を文字Stringに変換

String str = String.valueOf(charArray);

置き換え

インデックスi番目を特定文字で置き換え

charArray[i] = c

例題

アルファベットテーブル

for(char c = 'A';c <= 'Z';c++){
    System.out.print(c);
}

output

ABCDEFGHIJKLMNOPQRSTUVWXYZ

例題

アルファベットテーブルで変換表を作る系。
https://atcoder.jp/contests/abc342/tasks/abc342_c

可変長配列系

基本操作系: ArrayList<E>

cppだとvector<>、javaはArrayListvector<>でも良い。

  • 参照
    このリスト内の指定された位置にある要素を返します。
E get(int index)
  • 変更
    このリストの指定された位置にある要素を、指定された要素で置き換えます。
E set(int index, E element)
  • 包含
    指定の要素がこのリストに含まれている場合にtrueを返します。
boolean contains(Object o)
  • 削除
    このリストの指定された位置にある要素を削除します
boolean remove(int index)
  • 削除
    指定された要素がこのリストにあれば、その最初のものをリストから削除します。
remove(Object o)

末尾の参照と変更: LinkedList<E>

LinkedListはi番目の参照が遅い。が、stack的な操作ができたり割と便利な面はある。

  • 末尾参照
    このリスト内の最後の要素を返します。
E getLast()
  • 末尾に追加
    このリストの最後に、指定された要素を追加します。
void addLast(E e)
  • 値の代入
    このリストの指定された位置にある要素を、指定された要素で置き換えます
E set(int index, E element)
  • stack:pop
    このリストが表すスタックから要素をポップします。
E pop()
  • stack:push
    このリストが表すスタック上に要素をプッシュします。
void push(E e)

cppとjavaの比較

cppの場合、配列のサイズ3。初期値100の配列は次で書ける。

vector<int> a = vector<int>(3, 100);
a[2] = 777;
for(int val:a){
  cout << val << endl;
}
100
100
777

javaの場合、cppのようにサイズで初期化して、指定した値で初期化ができない。初期化すると要素は0が割り当てられる。
(調べ中)

ArrayList<integer> a = new ArrayList<integer>;
// a[2] = 777; // error 
// Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 0
// a.set( 2, 777); 
a.add(100);
a.add(100);
a.add(100);
a.set(2, 777)
for (Integer val: a) {
    System.out.println(val);
}
100
100
777

int型配列を使用。

int num = 3
int[] num = new int[num];
num[2] = 5;

for (int i : num) {
    System.out.println(i);
}
0
0
5

備考

Python、C++、Javaで考えるデータ構造と計算量の話

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?