ynjay Ответов: 2

Как преобразовать строку[] букв в int[]


У меня есть строка [], которая содержит:
[g, g, g, e, e, e, g, e, g, g]

и я хотел бы преобразовать его в int[] из 0 и 1:
[0, 0, 0, 1, 1, 1, 0, 1, 0, 0]


Что я уже пробовал:

Я попытался преобразовать его в систему radix base36, но не знаю, как это сделать для 0 и 1.
int size = stringArray.length;
int [] arr = new int [size];
  for(int i=0; i<size; i++) {
	arr[i] =  Integer.parseInt(stringArray[i], 36) ;
}

Sandeep Mewara

Какова здесь логика алфавита до 1 или 0? Что будет, если я дам тебе еще одно письмо?

ynjay

В принципе, мне нужен фрейм данных, который использует метки 0 и 1, которые основаны на массиве, который не имеет особого значения, какие буквы используются, но должен быть только 2 буквы, и одна должна быть 0, а другая 1.

Gerry Schmitz

Похоже, вы спрашиваете, какие "ярлыки" использовать ... Как насчет яиц и спама?

ynjay

Мне нужен массив из 0 и 1

2 Ответов

Рейтинг:
2

Richard MacCutchan

Что-то вроде:

g = 'g'
e = 'e'
letters = [g, g, g, e, e, e, g, e, g, g]
bools = [x==g for x in letters]
print(bools)

В то время как это использует истину и ложь в качестве результатов, это не должно быть слишком трудно получить то, что вы хотите.

Ой.


CPallini

Эй, Ричард, я знаю, что ты так любишь питона, но..... Это же Ява!

Richard MacCutchan

Дох!

Рейтинг:
19

CPallini

Попробуй

public class MyTest
{ 
  public static void main( String args[] )
  { 
    String [] sa = { "g", "g", "g", "e", "e", "e", "g", "e", "g", "g" };
    
    int [] ia = to_int(sa);
    for ( int i=0; i< ia.length; ++i)
      System.out.printf("%d, ", ia[i]);
    System.out.println();
  }

  static int [] to_int(String sa[])
  {
    int len = sa.length;
    int [] result = new int[len];

    for(int i = 0; i < len; ++i)
    {
      result[i] = sa[i].equals("e") ? 1 : 0;
    }
    return result;
  }
}


ynjay

Большое спасибо!

CPallini

Добро пожаловать.