teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

BitSetを使った例に変更

2020/01/29 23:26

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -1,21 +1,23 @@
1
1
  番外編? List系使わず、要素数も限られるけど、ビット演算で簡単に・・・
2
2
 
3
3
  ```java
4
+ import java.util.Arrays;
5
+
4
6
  class Main {
5
7
  public static void main(String[] args) {
6
8
  String s[] = {"あ", "い", "う", "え", "お"};
7
9
 
8
- var bit = (1 << Integer.parseInt(args[0]))
10
+ var bit = new java.util.BitSet();
9
- | (1 << Integer.parseInt(args[1]));
11
+ Arrays.stream(args).mapToInt(Integer::parseInt).forEach(bit::set);
12
+ var i = 0;
10
13
  for (var e: s) {
11
- if ((bit & 1) == 0) System.out.println(e);
14
+ if (!bit.get(i++)) System.out.println(e);
12
- bit >>= 1;
13
15
  }
14
16
  }
15
17
  }
16
18
  ```
17
19
 
18
- 無理矢理 stream使ってみたり・・・
20
+ BitSetを使って制限解除。
19
21
 
20
22
  ```java
21
23
  import java.util.Arrays;
@@ -24,10 +26,11 @@
24
26
  public static void main(String[] args) {
25
27
  String s[] = {"あ", "い", "う", "え", "お"};
26
28
 
29
+ var bit = new java.util.BitSet();
27
- var bit = Arrays.stream(args).mapToInt(x -> 1<<Integer.parseInt(x)).sum();
30
+ Arrays.stream(args).mapToInt(Integer::parseInt).forEach(bit::set);
31
+ var i = 0;
28
32
  for (var e: s) {
29
- if ((bit & 1) == 0) System.out.println(e);
33
+ if (!bit.get(i++)) System.out.println(e);
30
- bit >>= 1;
31
34
  }
32
35
  }
33
36
  }

2

stream版追記

2020/01/29 23:26

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -1,4 +1,4 @@
1
- 番外編? List系使わず、要素数も限られるけど、ビット演算で・・・
1
+ 番外編? List系使わず、要素数も限られるけど、ビット演算で簡単に・・・
2
2
 
3
3
  ```java
4
4
  class Main {
@@ -13,4 +13,22 @@
13
13
  }
14
14
  }
15
15
  }
16
+ ```
17
+
18
+ 無理矢理 stream使ってみたり・・・
19
+
20
+ ```java
21
+ import java.util.Arrays;
22
+
23
+ class Main {
24
+ public static void main(String[] args) {
25
+ String s[] = {"あ", "い", "う", "え", "お"};
26
+
27
+ var bit = Arrays.stream(args).mapToInt(x -> 1<<Integer.parseInt(x)).sum();
28
+ for (var e: s) {
29
+ if ((bit & 1) == 0) System.out.println(e);
30
+ bit >>= 1;
31
+ }
32
+ }
33
+ }
16
34
  ```

1

説明変更

2020/01/29 15:11

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -1,4 +1,4 @@
1
- 要素数限られるけど、ビット演算で・・・
1
+ 番外編? List系使わず、要素数限られるけど、ビット演算で・・・
2
2
 
3
3
  ```java
4
4
  class Main {