Сегодня мой 61-й день кодинга. я решил 2 задачи
Проблема 1: повернуть строку
Имея две строки s и goal, вернуть true в том и только в том случае, если s может стать goal после некоторого количества сдвигов на s.
Сдвиг на s состоит в перемещении самого левого символа s в крайнее правое положение.
- Например, если
s = "abcde", то через одну смену будет"bcdea".
Пример 1:
Input: s = "abcde", goal = "cdeab" Output: true
Пример 2:
Input: s = "abcde", goal = "abced" Output: false
Ограничения:
1 <= s.length, goal.length <= 100sиgoalсостоят из строчных английских букв.
Решение (в Java):
class Solution {
public boolean rotateString(String s, String goal) {
Queue<Character> q1= new LinkedList<>();
Queue<Character> q2 = new LinkedList<>();
for(int i=0; i<s.length(); i++)
q1.add(s.charAt(i));
for(int i=0; i<goal.length(); i++)
q2.add(goal.charAt(i));
int k=goal.length();
while(k>0){
char ch=q2.peek();
q2.remove();
q2.add(ch);
if(q2.equals(q1))
return true;
k--;
}
return false;
}
}
Задача 2: перетасовать строку
Вам задана строка s и массив целых чисел indices одинаковой длины. Строка s будет перемешана таким образом, что символ в позиции ith переместится на indices[i] в перемешанной строке.
Вернуть перетасованную строку.
Пример 1:

Input: s = "codeleet", indices = [4,5,6,7,0,2,1,3] Output: "leetcode" Explanation: As shown, "codeleet" becomes "leetcode" after shuffling.
Пример 2:
Input: s = "abc", indices = [0,1,2] Output: "abc" Explanation: After shuffling, each character remains in its position.
Ограничения:
s.length == indices.length == n1 <= n <= 100sсостоит только из строчных английских букв.0 <= indices[i] < n- Все значения
indicesявляются уникальными.
Решение (в Java):
class Solution {
public String restoreString(String s, int[] indices) {
Map< Integer , Character> hm= new HashMap<>();
String S="";
for( int i=0; i<s.length(); i++)
hm.put( indices[i], s.charAt(i));
for(int i=0; i<s.length(); i++)
S+=hm.get(i);
return S;
}
}