曼哈顿距离

class Solution {
    public String alphabetBoardPath(String target) {
        int x = 0, y = 0, nx = 0, ny = 0;
        StringBuffer ans = new StringBuffer("");
        for (int i = 0; i < target.length(); i++) {
            int temp = target.charAt(i) - 'a' ;
            if (i > 0 && target.charAt(i) == target.charAt(i - 1)) {
                ans.append("!");
            } else {
                nx = temp / 5;
                ny = temp % 5;
                if (ny < y) {
                    for (int z = 0; z < y - ny; z++)
                        ans.append("L");
                }
                if (nx < x) {
                    for (int z = 0; z < x - nx; z++)
                        ans.append("U");
                }
                if (nx > x) {
                    for (int z = 0; z < nx - x; z++)
                        ans.append("D");
                }
                if (ny > y) {
                    for (int z = 0; z < ny - y; z++)
                        ans.append("R");
                }

                ans.append("!");
                x = nx;
                y = ny;

            }
        }
        return ans.toString();
    }
}