public String convertFromZigZag(String s, int numRows) { ArrayList<Integer>[] hlp = new ArrayList[numRows]; for(int j=0;j<numRows;j++) hlp[j] = new ArrayList<Integer>(); int row = 0; int way = 1; for(int i = 0; i < s.length(); i++) { hlp[row].add(i); if(row == numRows-1) way = -1; else if(row == 0) way = 1; row = row + way; } ArrayList<Integer> merged = new ArrayList<Integer>(); for(int j=0;j<numRows;j++) merged.addAll(hlp[j]); char res[] = new char[s.length()]; int cnt = 0; for(int i : merged) { res[i] = s.charAt(cnt); cnt++; } System.out.println(Arrays.toString(res)); return new String(res); } public String simplifyPath(String path) { String[] parts = path.split("/"); Stack<String> stack = new Stack<String>(); // put parts into stack for(int i = 0; i < parts.length; i++) { // ignore . and double slash if(parts[i].equals("") || parts[i].equals(".")) { continue; } else if(parts[i].equals("..")) { // go back in case of .. if(!stack.empty()) stack.pop(); } else { // put all else into stack stack.push(parts[i]); } } if(stack.empty()) return "/"; String result = ""; while(!stack.empty()) { result = "/"+stack.pop()+result; } return result; }