主要是针对z的处理,
class Solution {
public:
void pos(char ch, int& x, int& y){
x = int((ch-'a')/5);
y = int((ch-'a')%5);
}
string func(char ch2, int ch1x, int ch1y, int ch2x, int ch2y){
string res = "";
if (ch2!='z'){
if (ch2x-ch1x>0){
for (int i=0;i<ch2x-ch1x;i++){
res += 'D';
}
}
if (ch2x-ch1x<0){
for (int i=0;i<ch1x-ch2x;i++){
res += 'U';
}
}
if (ch2y-ch1y>0){
for (int i=0;i<ch2y-ch1y;i++){
res += 'R';
}
}
if (ch2y-ch1y<0){
for (int i=0;i<ch1y-ch2y;i++){
res += 'L';
}
}
}
else{
if (ch2y-ch1y>0){
for (int i=0;i<ch2y-ch1y;i++){
res += 'R';
}
}
if (ch2y-ch1y<0){
for (int i=0;i<ch1y-ch2y;i++){
res += 'L';
}
}
if (ch2x-ch1x>0){
for (int i=0;i<ch2x-ch1x;i++){
res += 'D';
}
}
if (ch2x-ch1x<0){
for (int i=0;i<ch1x-ch2x;i++){
res += 'U';
}
}
}
return res;
}
string alphabetBoardPath(string target) {
vector<int> num;
vector<char> item;
int now=target[0];
int count=1;
for(int i=1;i<target.size();i++){
if (target[i]==target[i-1]){
count ++;
}
else{
num.push_back(count);
item.push_back(now);
now = target[i];
count = 1;
}
}
num.push_back(count);
item.push_back(now);
string res;
int ch1x, ch1y, ch2x, ch2y;
for(int i=0;i<num.size();i++){
if (i==0){
ch1x=0;
ch1y=0;
pos(item[0], ch2x, ch2y);
}
else{
pos(item[i-1], ch1x, ch1y);
pos(item[i], ch2x, ch2y);
}
string path = func(item[i], ch1x, ch1y, ch2x, ch2y);
res += path;
for (int j=0;j<num[i];j++){
res = res + '!';
}
}
return res;
}
};