function lastUniqueChar( str ) { if(!str) return ""; //uniques数组按序存放str中只出现一次的字符 var uniques=[]; var strLen=str.length; for(let i=0;i<strLen;i++){ if(str.indexOf(str[i])===str.lastIndexOf(str[i])){ uniques.push(str[i]); } } //一定不要漏掉全都是重复出现的字符的情况 if(uniques.length===0) return ""; else return uniques[uniques.length-1]; } module.exports = { lastUniqueChar : lastUniqueChar };
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 给定两个无序数组arr1和arr2,返回一个新的数组arr3,arr3里面的元素同时出现在arr1和arr2里面,而且要求arr3是正序的并且不包含重复值。 * @param str string字符串 无序数组1 * @return string字符串 */ public String lastUniqueChar (String str) { // write code here HashMap<Character, Integer> counter = new HashMap<>(); for(int i = 0; i < str.length(); i++){ char c = str.charAt(i); counter.put(c, counter.getOrDefault(c, 0) + 1); } for(int i = str.length() - 1; i >= 0; i--) if(counter.get(str.charAt(i)) == 1) return "" + str.charAt(i); return ""; } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 给定两个无序数组arr1和arr2,返回一个新的数组arr3,arr3里面的元素同时出现在arr1和arr2里面,而且要求arr3是正序的并且不包含重复值。 * @param str string字符串 无序数组1 * @return string字符串 */ function lastUniqueChar( str ) { // write code here let n = str.length let map = new Map() for(let j = n - 1; j >= 0; j --){ let s = str[j] if(map.has(s)) continue map.set(s,1) if(str.indexOf(s) === j) return s } return '' } module.exports = { lastUniqueChar : lastUniqueChar };
function lastUniqueChar( str ) { // write code here if(str.length === 0 || str.length === 1) return str; let i = str.length - 1; while(i > -1) { let k = i; while(str[k] === str[k - 1]) { k--; } if (k === i && (!str.slice(0, k).concat(str.slice(k + 1)).includes(str[i]))) { return str[i] } i = k - 1; } return '' }
class Solution: def lastUniqueChar(self , str ): # write code here if str=='': return '' if len(str)==1: return str data={} keys=[] for ch in str: data[ch]=0 for ch in str: data[ch]+=1 for key in data: keys.append(key) print(keys,data) for i in range(len(keys)-1,-1,-1): if data[keys[i]]==1: return keys[i] elif i==0: return ''
function lastUniqueChar( str ) { // write code here var obj={}; for(let i=0;i<str.length;i++){ !obj[str[i]] ? obj[str[i]]=1 : obj[str[i]]++; } var ch=''; for(let k in obj){ if(obj[k]==1){ ch=k; } } return ch; }
function findLastOnlyOccurredOnceChar(str){ if(!str||str==='') return str; let [map1,map2] = [new Map(),new Map()]; str.split('').forEach(s=>{ if(!map1.has(s)){ map1.set(s,true); }else if(!map2.has(s)){ map2.set(s,true); } }); let lastIndex = -1; for(let char of map1.keys()){ if(!map2.has(char)) lastIndex = Math.max(lastIndex,str.lastIndexOf(char)); } return str.charAt(lastIndex); }
function lastUniqueChar( str ) { // write code here if(str == "") { return "" } for(let i = str.length - 1; i >= 0; i--) { let times = 0; for(let j = 0; j < str.length; j++) { times = str[i] == str[j] ? times + 1 : times; } if(times == 1) { return str[i]; } } return ""; }
char* lastUniqueChar(char* str ) { int i; char *j; char *m; char *n; //空字符串的特殊情况 if(str[0]==0) return str; else//一般情况 { for(i=strlen(str)-1;i>=0;i--) { m=strchr(str, str[i]);//查找字符str[i]第一次出现的位置,返回char* n=strrchr(str, str[i]);//逆向查找 if(m==&str[i]&&n==&str[i]) { //两边查找到相同地址 j=&str[i]; *(j+1)='\0'; return j; } } //不存在单独字符的特殊情况 m[0]='\0'; j=&m[0]; *(j+1)='\0'; return j; } }还是c的写法
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 给定两个无序数组arr1和arr2,返回一个新的数组arr3,arr3里面的元素同时出现在arr1和arr2里面,而且要求arr3是正序的并且不包含重复值。 * @param str string字符串 无序数组1 * @return string字符串 */ string lastUniqueChar(string str) { reverse(str.begin(), str.end()); string ans; int n=str.size(); for(int i=0;i<n;++i){ if (str.substr(i+1).find(str[i])==string::npos) { ans=str[i]; break; } else{ str+=str[i]; } } return ans; } };
function lastUniqueChar(str) { let arr = str.split(""); let map = new Map(); for (let i = 0; i < arr.length; i++) { if (!map.has(arr[i])) { map.set(arr[i], 1); } else { map.set(arr[i], map.get(arr[i]) + 1); } } let entries = [...map].reverse(); // console.log(entries); for (let i = 0; i < entries.length; i++) { if (entries[i][1] === 1) return entries[i][0]; } return ""; }