657. 機(jī)器人能否返回原點(diǎn) - 力扣(LeetCode)
在二維平面上,有一個(gè)機(jī)器人從原點(diǎn)?
(0, 0)
?開(kāi)始。給出它的移動(dòng)順序,判斷這個(gè)機(jī)器人在完成移動(dòng)后是否在?(0, 0)
?處結(jié)束。移動(dòng)順序由字符串?
moves
?表示。字符?move[i]
?表示其第?i
?次移動(dòng)。機(jī)器人的有效動(dòng)作有?R
(右),L
(左),U
(上)和?D
(下)。如果機(jī)器人在完成所有動(dòng)作后返回原點(diǎn),則返回?
true
。否則,返回?false
。注意:機(jī)器人“面朝”的方向無(wú)關(guān)緊要。?
“R”
?將始終使機(jī)器人向右移動(dòng)一次,“L”
?將始終向左移動(dòng)等。此外,假設(shè)每次移動(dòng)機(jī)器人的移動(dòng)幅度相同。示例 1:
輸入: moves = "UD" 輸出: true 解釋:機(jī)器人向上移動(dòng)一次,然后向下移動(dòng)一次。所有動(dòng)作都具有相同的幅度,因此它最終回到它開(kāi)始的原點(diǎn)。因此,我們返回 true。示例 2:
輸入: moves = "LL" 輸出: false 解釋:機(jī)器人向左移動(dòng)兩次。它最終位于原點(diǎn)的左側(cè),距原點(diǎn)有兩次 “移動(dòng)” 的距離。我們返回 false,因?yàn)樗谝苿?dòng)結(jié)束時(shí)沒(méi)有返回原點(diǎn)。
class Solution {
public boolean judgeCircle(String moves) {
StringBuffer s = new StringBuffer(moves);
int len = s.length();
int x = 0,y = 0;
for(int i = 0 ; i < len ; ++i) {
switch(s.charAt(i)) {
case 'U':
y+=1;
break;
case 'D':
y-=1;
break;
case 'L':
x-=1;
break;
case 'R':
x+=1;
break;
}
}
if(x!=0||y!=0) return false;
return true;
}
}
?這是一道簡(jiǎn)單題,根據(jù)題目可以很容易的發(fā)現(xiàn)只需要根據(jù)題目給出的方向進(jìn)行模擬即可,即對(duì)機(jī)器人的走向使用x,y進(jìn)行模擬,上下走動(dòng)時(shí),只對(duì)y有影響。左右走動(dòng)時(shí)只對(duì)x有影響。并且最后的面向并不考慮,也就是只需要x,y都為0即為回到原位。對(duì)給出的字符串模擬即可。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-703107.html
題解的方法和博主的方法差不多,不過(guò)不需要轉(zhuǎn)成StringBuffer就可以做了,博主用習(xí)慣了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-703107.html
到了這里,關(guān)于【每日一題】657. 機(jī)器人能否返回原點(diǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!