/SRM518-LargestSubsequence.go

https://code.google.com/ · Go · 208 lines · 201 code · 6 blank · 1 comment · 11 complexity · 096d8bd58c88de281c8546d11707a14e MD5 · raw file

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func main() {
  6. check()
  7. }
  8. func getLargest(s string) string {
  9. res := ""
  10. b := []byte(s)
  11. bi := 0
  12. for {
  13. label:
  14. if bi == len(b) {
  15. break
  16. }
  17. for i := byte('z'); i >= byte('a'); i-- {
  18. for j := bi; j < len(b); j++ {
  19. if b[j] == i {
  20. res += string(i)
  21. bi = j + 1
  22. goto label
  23. }
  24. }
  25. }
  26. }
  27. return res
  28. }
  29. type iotype struct {
  30. arg, result string
  31. }
  32. func check() {
  33. tests := []iotype{
  34. iotype{"test", "tt"},
  35. iotype{"a", "a"},
  36. iotype{"example", "xple"},
  37. iotype{"aquickbrownfoxjumpsoverthelazydog", "zyog"},
  38. iotype{"zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccaa", "zzyyxxwwvvuuttssrrqqppoonnmmllkkjjiihhggffeeddccaa"},
  39. iotype{"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},
  40. iotype{"dtbsthudhqvqxxmqxusna", "xxxusna"},
  41. iotype{"ddifmyqoojkeyiee", "yyiee"},
  42. iotype{"mhdsrshovdancelcihqcrsfdfvsrgstsxvzh", "zh"},
  43. iotype{"vslheaxwhc", "xwhc"},
  44. iotype{"lumguibrvvnvwnwhzail", "zl"},
  45. iotype{"hctiodxvzmllfgri", "zri"},
  46. iotype{"zjxhngujgnhlqpkfwuseqzcrxzjsltdekwoiklfgkywdpj", "zzzywpj"},
  47. iotype{"sw", "w"},
  48. iotype{"xpmjapuoeqouquzjnuyxzajdrn", "zzrn"},
  49. iotype{"rkkpfgidl", "rpl"},
  50. iotype{"phqhlsucxtebkyemlykfmzlznmopuhgvdambgpiglo", "zzvpo"},
  51. iotype{"bzslcgclmgzulhxdrhkogsbuofrjrapcdutisprkrvosug", "zzxvug"},
  52. iotype{"puluqyrejeyurtkeaufs", "yyuus"},
  53. iotype{"znm", "znm"},
  54. iotype{"nxaiqgj", "xqj"},
  55. iotype{"rsng", "sng"},
  56. iotype{"sxcpfwwyjsjfkrxpycnvcwvcnghwphpxrlfmcccvyppfr", "yyyr"},
  57. iotype{"ubvbsmbdayynthasljdikieqdjbnmr", "yytsr"},
  58. iotype{"dvypuukxnjiqwavhfsypfghhqhumbfznmjn", "znn"},
  59. iotype{"t", "t"},
  60. iotype{"lohyungouxtdkoqncecbecamiglwxamgkyjoisgymbeynmpftc", "yyyytc"},
  61. iotype{"mvcjkcbtzdyet", "zyt"},
  62. iotype{"zjejurusuqdatseyswqghs", "zyws"},
  63. iotype{"rkjqiepcwkgoobtawithjybepylvvwm", "yywm"},
  64. iotype{"sggqrxlcadkjjxcomhqgqpzkyetpz", "zz"},
  65. iotype{"oizojobmoeyncmosopractypj", "zyypj"},
  66. iotype{"qxydejwry", "yy"},
  67. iotype{"rnlrwcsgegebmwweybg", "yg"},
  68. iotype{"xbulkgnapqrb", "xurb"},
  69. iotype{"fqgq", "qq"},
  70. iotype{"euthsnsugfxtmfkwtlldwenybjfafvecasosvnxbs", "yxs"},
  71. iotype{"oxedpvevehtmfsletplcpnndvlxduxxwieibnthkhfnkpvhj", "xxxxwvj"},
  72. iotype{"akvccoziowkmrzpdwsvybiszfccgowzlosn", "zzzzsn"},
  73. iotype{"ixnaxxjgbmisqsjxjxgc", "xxxxxgc"},
  74. iotype{"i", "i"},
  75. iotype{"djouowzmqzafubqqenotqmwzfgcmtpveanvmb", "zzzvvmb"},
  76. iotype{"qparcaihdnyk", "yk"},
  77. iotype{"frraeazgnzdmhtbtaymysglanvdqlbmqicqw", "zzyyw"},
  78. iotype{"jeottiolzlxcy", "zy"},
  79. iotype{"gubnawecsnsekp", "wssp"},
  80. iotype{"uiktpzkdxynlifewoqmmbilpddlpecxndkebucbghbjqan", "zyxuqn"},
  81. iotype{"cjpxagblsqilexcqzjngqhnc", "zqnc"},
  82. iotype{"jvgloimmvsdhfgdafmzhxbzwfhkntrjpaocnidhfzeooqp", "zzzqp"},
  83. iotype{"mdvmgsxmxnvxgjtsheoxvmgoryhnkswbznzvfrdrqjm", "zzvrrqm"},
  84. iotype{"aanhrzdsbbhdoezohvuhzoeaekxpwhnj", "zzzxwnj"},
  85. iotype{"hhf", "hhf"},
  86. iotype{"onltutgmnnpxiwue", "xwue"},
  87. iotype{"ygng", "yng"},
  88. iotype{"sgrmksiyzesherusczthyotrbtzvegbzkulsprvikhohlyg", "zzzzyg"},
  89. iotype{"rgzoaitknjjioypjiaevejqldjgtw", "zyw"},
  90. iotype{"iynwupnztulzbyk", "zzyk"},
  91. iotype{"mrtnnhfvaqtctfuipndaye", "ye"},
  92. iotype{"zegbcvvxxfqxo", "zxxxo"},
  93. iotype{"kwpxplhnattmiuhdq", "xuq"},
  94. iotype{"zkhpjjfztbnxs", "zzxs"},
  95. iotype{"wdxxiqzyhhxsp", "zyxsp"},
  96. iotype{"egdnuvamuhkucdfvssxavdjuymvzgfymr", "zyr"},
  97. iotype{"kwjuffpavnbkypmtfuxvabwj", "yxwj"},
  98. iotype{"jbxoquxgeettykaciacheofaqceidc", "yqidc"},
  99. iotype{"pnmqqmkogrhghpqwcpzdspbtvlvpotgdikgm", "zvvtm"},
  100. iotype{"vwqmytncvpxazwrjwroacwono", "zwwwoo"},
  101. iotype{"oehulzriqbdtawyytjskhlemqmdshspq", "zyytsssq"},
  102. iotype{"mlwlasmlxqriipmqglsvswhnxyirhaofgyhkiwpo", "yywpo"},
  103. iotype{"eszpgnfapcsbftxagmmdcqi", "zxqi"},
  104. iotype{"rbjopthedsdewdudlupyicpmdtpmqrf", "ytrf"},
  105. iotype{"renwjvqjfdzywfxpajvemksbdb", "zyxvsdb"},
  106. iotype{"hnrthrdkyalotlymzcumobmvzvstciqmnbxdlgftjgpfbm", "zzxtpm"},
  107. iotype{"uzkbkzmdozxqmvvmbbioyljyemntpldykxwjgnllqrdugrahe", "zzzyyyxwurhe"},
  108. iotype{"tfhsnjkvbndnnqjkwfd", "wfd"},
  109. iotype{"iy", "y"},
  110. iotype{"zyeqfuqghbnhhrboymupudbomtlql", "zyyuutql"},
  111. iotype{"yougpkmhhdmkorkkincpcnhxunainwqhbmmxkhwfarlahdmoak", "yxxwrok"},
  112. iotype{"ljmlijlnlfaaynvqyhtxck", "yyxk"},
  113. iotype{"ezhidvylyuyqluoxozyv", "zzyv"},
  114. iotype{"kjqhcdshyfeqiwrencjowhqksyqeyeutemfgmyxs", "yyyyxs"},
  115. iotype{"ydikqgggygevjdeyxpnzvmdvfkxralhnuvywensvwe", "zywwe"},
  116. iotype{"rdpwejzcdxxcimwm", "zxxwm"},
  117. iotype{"jtlgzwjtyaewnvgezxcyntlj", "zzytlj"},
  118. iotype{"hjypqtcafblpnlxeaavswvaijkflyrekr", "yyrr"},
  119. iotype{"drmtfhglfcmsobeqibtjcskngttvmzzpgkvxwctv", "zzxwv"},
  120. iotype{"wvttsspponkjjihfebaa", "wvttsspponkjjihfebaa"},
  121. iotype{"xwssrplkihgfc", "xwssrplkihgfc"},
  122. iotype{"zzzyyyxwwvtronnlllljiiigeddccbbaa", "zzzyyyxwwvtronnlllljiiigeddccbbaa"},
  123. iotype{"l", "l"},
  124. iotype{"zxrrmfda", "zxrrmfda"},
  125. iotype{"xwwvvutttssqqpppoonnnmllkkkkjjjihhffccccbbbba", "xwwvvutttssqqpppoonnnmllkkkkjjjihhffccccbbbba"},
  126. iotype{"zyxuuuttttssqpoommmlkkjihgeeddccaaa", "zyxuuuttttssqpoommmlkkjihgeeddccaaa"},
  127. iotype{"yxwsssrllkc", "yxwsssrllkc"},
  128. iotype{"yvqqoollkca", "yvqqoollkca"},
  129. iotype{"zyutttsqqppponnnnnmlllkkkjihhhggeeeddccbbb", "zyutttsqqppponnnnnmlllkkkjihhhggeeeddccbbb"},
  130. iotype{"zxxvsrponmmljiiihgba", "zxxvsrponmmljiiihgba"},
  131. iotype{"xwvssqoljjjiiigfccbaa", "xwvssqoljjjiiigfccbaa"},
  132. iotype{"zzywwutsssrrronmllljjiihhgggggfeeea", "zzywwutsssrrronmllljjiihhgggggfeeea"},
  133. iotype{"wvsqonkifecb", "wvsqonkifecb"},
  134. iotype{"zzyyyxxwvvutssrrrqqppponmllkjjiihgffdcbbbaa", "zzyyyxxwvvutssrrrqqppponmllkjjiihgffdcbbbaa"},
  135. iotype{"zzywuuusssrrrqponmlkkkiigfedccb", "zzywuuusssrrrqponmlkkkiigfedccb"},
  136. iotype{"yyyyyyxxwwwvutttssrqqppppoonnmkjihgggddddaa", "yyyyyyxxwwwvutttssrqqppppoonnmkjihgggddddaa"},
  137. iotype{"zxooc", "zxooc"},
  138. iotype{"utqp", "utqp"},
  139. iotype{"yxuttssrrnmjida", "yxuttssrrnmjida"},
  140. iotype{"ffffeeeeeddddccccccccccbbbbbbbbaaa", "ffffeeeeeddddccccccccccbbbbbbbbaaa"},
  141. iotype{"ffeeedcccca", "ffeeedcccca"},
  142. iotype{"fdda", "fdda"},
  143. iotype{"ffffeeeeeeddddcccccccbbbbbbbaaaaaaaaa", "ffffeeeeeeddddcccccccbbbbbbbaaaaaaaaa"},
  144. iotype{"fffeeeeeddddddddcccccccbbbbbbbbbaaaa", "fffeeeeeddddddddcccccccbbbbbbbbbaaaa"},
  145. iotype{"ffffeeeeeedddccccccbbbaaaa", "ffffeeeeeedddccccccbbbaaaa"},
  146. iotype{"ffffffeeeeedddddddcccccccbbbbbbbbaaaaaaaa", "ffffffeeeeedddddddcccccccbbbbbbbbaaaaaaaa"},
  147. iotype{"ddba", "ddba"},
  148. iotype{"fffbbaaa", "fffbbaaa"},
  149. iotype{"fedddccccbbbaa", "fedddccccbbbaa"},
  150. iotype{"ffffeeeeeddbaaa", "ffffeeeeeddbaaa"},
  151. iotype{"fffffeeeeeeeeeeedddddcccccccccccbbbbbbbbbbbaaaaa", "fffffeeeeeeeeeeedddddcccccccccccbbbbbbbbbbbaaaaa"},
  152. iotype{"ffebbb", "ffebbb"},
  153. iotype{"ffeedddcbbbbaa", "ffeedddcbbbbaa"},
  154. iotype{"fffeeeeddccccbbbbbbbbaaaaaa", "fffeeeeddccccbbbbbbbbaaaaaa"},
  155. iotype{"bbbb", "bbbb"},
  156. iotype{"fffedaaaa", "fffedaaaa"},
  157. iotype{"bbaaaabaabbaabbbaaabbaaabaaabababaaababaaaabbbbba", "bbbbbbbbbbbbbbbbbbbbba"},
  158. iotype{"bbabbabbabaababaababaaaaaabaabab", "bbbbbbbbbbbbbb"},
  159. iotype{"abbbbabbbbbbabbbbabbababbabbabbba", "bbbbbbbbbbbbbbbbbbbbbbbba"},
  160. iotype{"bbbbbaabbaaabaabbababaabbababaabba", "bbbbbbbbbbbbbbbbbba"},
  161. iotype{"bbbabababbaa", "bbbbbbbaa"},
  162. iotype{"abbbbabbabbbabaaaaabaabaabaaababbbbabbb", "bbbbbbbbbbbbbbbbbbbbb"},
  163. iotype{"babbaaaa", "bbbaaaa"},
  164. iotype{"abbaabbaaaaabbbbbabbaaaaa", "bbbbbbbbbbbaaaaa"},
  165. iotype{"baaababbaaabbbabbaaaaababaaabaaaaa", "bbbbbbbbbbbbaaaaa"},
  166. iotype{"baabbaba", "bbbba"},
  167. iotype{"aedcbacdeacdedbebbc", "eeeec"},
  168. iotype{"caefdadbeedbebdcbcdca", "feeeddca"},
  169. iotype{"fbbabcccbbbbfcabf", "fff"},
  170. iotype{"ceaeedacaffddcfcdaebacdeeeb", "fffeeeeb"},
  171. iotype{"dcbecaded", "eed"},
  172. iotype{"ccddabecdfcbdefeedbbdaacda", "ffeeddda"},
  173. iotype{"dcffbbbbcfefedbbbfcdafddebfcdfdeeccfe", "fffffffffe"},
  174. iotype{"ffebcdbfccedbfaeaedaaaeefebdcdfa", "ffffffa"},
  175. iotype{"addcfafeaeefcbefcbbcedfbcfcdffcaaeeafdadcfca", "ffffffffffca"},
  176. iotype{"fcb", "fcb"},
  177. iotype{"fgfdsdgaasfdghfgffggffgfgf", "sshgggggf"},
  178. iotype{"asxcsa", "xsa"},
  179. iotype{"fhjtgui", "ui"},
  180. iotype{"naa", "naa"},
  181. iotype{"ttt", "ttt"},
  182. iotype{"maxbm", "xm"},
  183. iotype{"baaaf", "f"},
  184. iotype{"zba", "zba"},
  185. iotype{"zzzzzzzzzzddddddddddccccccccccbbbbbbbbbbaaaaaaaaaa", "zzzzzzzzzzddddddddddccccccccccbbbbbbbbbbaaaaaaaaaa"},
  186. iotype{"hhhhhhh", "hhhhhhh"},
  187. iotype{"tatttatttt", "tttttttt"},
  188. iotype{"aaaaaaaaa", "aaaaaaaaa"},
  189. iotype{"abcdefghgiabcdefghgiabcdefghgiabcdefghgiabcdefghgi", "iiiii"},
  190. iotype{"zzzzz", "zzzzz"},
  191. iotype{"aa", "aa"},
  192. iotype{"bza", "za"},
  193. }
  194. for _, t := range tests {
  195. a := getLargest(t.arg)
  196. if a == t.result {
  197. //fmt.Printf("OK\n")
  198. } else {
  199. fmt.Printf("NG return:%s expected:%s", a, t.result)
  200. }
  201. }
  202. }