题目
题目链接:
https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c
核心
Map
参考答案Java
java
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return int整型
*/
public int FirstNotRepeatingChar (String str) {
Map<Character, int[]> map = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (!map.containsKey(c)) {
map.put(c, new int[] {i, 0});
}
int[] t = map.get(c);
t[1] += 1;
map.put(c, t);
}
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
int[] t = map.get(c);
if (t[1] == 1) {
return t[0];
}
}
return -1;
}
}
参考答案Go
go
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return int整型
*/
func FirstNotRepeatingChar( str string ) int {
m:=map[byte][]int{}
for i:=0;i<len(str);i++{
var c byte = str[i]
_,ok:= m[c]
if !ok{
m[c] = make([]int,2)
m[c][0] =i
}
m[c][1] +=1
}
for i:=0;i<len(str);i++ {
var c byte = str[i]
if m[c][1] ==1 {
return m[c][0]
}
}
return -1
}
参考答案PHP
php
<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return int整型
*/
function FirstNotRepeatingChar( $str )
{
$map = array();
for($i=0;$i<strlen($str);$i++){
$c = $str[$i];
if(!isset($map[$c])){
$map[$c] = [0=>$i,1=>1];
}else{
$map[$c][1]+=1;
}
}
for($i=0;$i<strlen($str);$i++) {
$c = $str[$i];
if($map[$c][1] ==1){
return $map[$c][0];
}
}
return -1;
}