План курса / Все задачи / Алгоритмы и структуры данных
Первый уникальный символ
легко
# решено
Дана строка s, состоящая только из строчных английских букв. Необходимо найти индекс первого неповторяющегося символа в строке s.
Если все символы повторяются, вернуть -1.
Пример 1:
Ввод: s = "abcbaad"
Вывод: 2
Пример 2:
Ввод: s = "aabbcc"
Вывод: -1
Ограничения:
len(s) >= 1
Строка s содержит только строчные английские буквы
public class Solution {
public static int FindFirstUniqueCharacter(String s) {
// создаем словарь для хранения количества каждого символа
Dictionary<char, int> count = new Dictionary<char, int>();
foreach (char ch in s) {
if (!count.ContainsKey(ch)) {
count[ch] = 0;
}
count[ch]++;
}
// ищем первый символ, встречающийся 1 раз
for (int idx = 0; idx < s.Length; idx++) {
if (count[s[idx]] == 1) {
return idx;
}
}
return -1;
}
}
#include <string>
#include <unordered_map>
using namespace std;
int findFirstUniqueCharacter(string s) {
// создаем словарь для хранения количества каждого символа
unordered_map<char, int> count;
for (char ch : s) {
if (count.find(ch) == count.end()) {
count[ch] = 0;
}
count[ch] += 1;
}
// ищем первый символ, встречающийся 1 раз
for (int idx = 0; idx < s.size(); ++idx) {
if (count[s[idx]] == 1) {
return idx;
}
}
return -1;
}
package main
func findFirstUniqueCharacter(s string) int {
// ключ: символ, значение: кол-во в строке s
count := make(map[rune]int)
for _, ch := range s {
count[ch]++
}
// ищем первый символ, встречающийся 1 раз
for idx, ch := range s {
if count[ch] == 1 {
return idx
}
}
return -1
}
import java.util.*;
public class Solution {
public Integer findFirstUniqueCharacter(String s) {
// ключ: символ, значение: кол-во в строке s
Map<Character, Integer> count = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
count.put(ch, count.getOrDefault(ch, 0) + 1);
}
// ищем первый символ, встречающийся 1 раз
for (int idx = 0; idx < s.length(); idx++) {
char ch = s.charAt(idx);
if (count.get(ch) == 1) {
return idx;
}
}
return -1;
}
}
from typing import *
def find_first_unique_character(s: str) -> int:
# ключ: символ, значение: кол-во в строке s
count = {}
for ch in s:
if ch not in count:
count[ch] = 0
count[ch] += 1
# ищем первый символ, встречающийся 1 раз
for idx, ch in enumerate(s):
if count[ch] == 1:
return idx
return -1
/**
* @param {string} s
* @returns {number}
*/
export function findFirstUniqueCharacter(s) {
// ключ: символ, значение: кол-во в строке s
const count = {};
for (const ch of s) {
if (!(ch in count)) {
count[ch] = 0;
}
count[ch] += 1;
}
// ищем первый символ, встречающийся 1 раз
for (let idx = 0; idx < s.length; idx++) {
const ch = s[idx];
if (count[ch] === 1) {
return idx;
}
}
return -1;
}