标签:字符 原点 机器人 bucket 657 num 哈希 数学计算 moves
题目来源于力扣(LeetCode)
目录
一、题目
题目相关标签:字符串
二、解题思路
3.1 数学计算方式
-
遍历 moves 数组,出现 L 字符时加 1,出现 R 字符时减 1
-
出现 U 字符时加 2,出现 D 字符时减 2
-
最后**结果仍然为 0 **时,说明可以返回原点
-
思路:L 字符与 R 字符的个数相同并且 U 字符与 D 字符的个数相同时,机器人才能返回原点
3.2 哈希表方式
-
通过哈希数组来记录 moves 数组中元素 “L”, “R”, “U”, “D” 出现的次数
-
当哈希数组中元素 “L” 与 “R” 出现的次数相同,并且元素 “U” 与 “D” 出现的次数相同时,返回 true
-
否则返回 false
三、代码实现
3.1 数学计算方式
public static boolean judgeCircle(String moves) {
int num = 0;
char[] arr = moves.toCharArray();
for (char j : arr) {
// L 与 R,U 与 D 都会相互抵消
if (j == 'L') {
num += 1;
} else if (j == 'R') {
num -= 1;
} else if (j == 'U') {
num += 2;
} else {
num -= 2;
}
}
// 结果仍然为 0 时,说明能够回到原点
return num == 0;
}
3.2 哈希表方式
public static boolean judgeCircle(String moves) {
// 哈希映射数组,索引为键,索引上的元素为 moves 数组中字符元素出现的次数
int[] bucket = new int[26];
for (char i : moves.toCharArray()) {
bucket[i - 'A'] += 1;
}
// L 与 R 且 U 与 D 的个数相同时,说明能够返回原点
return bucket['R' - 'A'] == bucket['L' - 'A']
&& bucket['U' - 'A'] == bucket['D' - 'A'];
}
四、执行用时
4.1 数学计算方式
4.2 哈希表方式
五、部分测试用例
public static void main(String[] args) {
String moves = "UD"; // output:true
// String moves = "LL"; // output:false
boolean result = judgeCircle(moves);
System.out.println(result);
}
标签:字符,原点,机器人,bucket,657,num,哈希,数学计算,moves 来源: https://www.cnblogs.com/zhiyin1209/p/12952620.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。