Pergunta de entrevista da empresa Google

Serialize and deserialize a collection of strings into a single one.

Respostas da entrevista

Sigiloso

4 de fev. de 2012

This is a solution that is not limited by chars package com.google.interview2; import java.util.ArrayList; import java.util.List; public class StringSeralization { public static String serialize (List words, List pos){ int currPos = 0; StringBuffer sb = new StringBuffer(); for (String s : words){ pos.add(currPos+s.length()); currPos += s.length(); sb.append(s); } return sb.toString(); } public static List deserialize(String s, List pos){ List list = new ArrayList(); int start = 0; for (Integer end : pos){ list.add(s.substring(start, end)); start = end; } return list; } public static void main(String[] args){ List list= new ArrayList(); list.add("fdsf"); list.add("55 435"); list.add("hdfswzx"); list.add("5345450-- "); List pos = new ArrayList(); String s = serialize(list, pos); System.out.println(s); List newList = deserialize(s, pos); for (String s1 : newList){ System.out.println(s1); } } }

Sigiloso

5 de nov. de 2015

#include #include #include #include #include using namespace std; string serialize(const vector& ip) { string op; if (!ip.size()) { return op; } for (int i = 0; i deserialize(const string& ip) { vector op; if (!ip.size()) { return op; } int si = 0; int charsToRead = 0; int i = 0; while (i ip; ip.push_back("abc3:"); ip.push_back("bcdesadfasdfasdfasdfdaf"); string serializedString = serialize(ip); cout deserializedStrings = deserialize(serializedString); for (int i = 0; i < deserializedStrings.size(); ++i) { cout << i << ":" << deserializedStrings[i] << endl; } return 0; }

Sigiloso

4 de fev. de 2012

This code is working, the problem is if " " is part of the strings this will not work package com.google.interview2; import java.util.ArrayList; import java.util.List; public class StringSeralization { public static String serialize (List words){ StringBuffer sb = new StringBuffer(); for (String s : words){ sb.append(s); sb.append(" "); } return sb.substring(0, sb.length()-1); } public static List deserialize(String s){ List list = new ArrayList(); char[] s1 = s.toCharArray(); StringBuffer sb = new StringBuffer(); for (char c : s1){ if (c != ' '){ sb.append(c); } else{ list.add(sb.toString()); sb.delete(0, sb.length()); } } list.add(sb.toString()); return list; } public static void main(String[] args){ List list= deserialize("dsfds fdsfdsf yutyu ewrewrewr"); for (String s : list){ System.out.println(s); } String s1 = serialize(list); System.out.println(s1); } }