牛客NC31 第一个只出现一次的字符【simple map Java,Go,PHP】

题目

题目链接:

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;
}
相关推荐
十八岁讨厌编程6 分钟前
【算法训练营 · 补充】LeetCode Hot100(中)
算法·leetcode
橘颂TA8 分钟前
【剑斩OFFER】算法的暴力美学——最小覆盖字串
算法·c/c++·就业
wearegogog12310 分钟前
基于混合蛙跳算法和漏桶算法的无线传感器网络拥塞控制与分簇新方法
网络·算法
Tiandaren1 小时前
大模型应用03 || 函数调用 Function Calling || 概念、思想、流程
人工智能·算法·microsoft·数据分析
2301_795167202 小时前
玩转Rust高级应用 如何进行理解Refutability(可反驳性): 模式是否会匹配失效
开发语言·算法·rust
小当家.1052 小时前
[LeetCode]Hot100系列.贪心总结+思想总结
算法·leetcode·职场和发展
墨雪不会编程2 小时前
数据结构—排序算法篇二
数据结构·算法·排序算法
ShineWinsu3 小时前
对于数据结构:堆的超详细保姆级解析—上
数据结构·c++·算法·计算机·二叉树·顺序表·
im_AMBER3 小时前
Leetcode 46
c语言·c++·笔记·学习·算法·leetcode
努力学算法的蒟蒻4 小时前
day09(11.6)——leetcode面试经典150
算法·leetcode·职场和发展