Java Quick Select Solution - Easy understanding
\nclass Solution {\n    public String kthLargestNumber(String[] nums, int k) {\n        if (nums == null) {\n            return null;\n        } \n        \n   
```\nclass Solution {\n    public String kthLargestNumber(String[] nums, int k) {\n        if (nums == null) {\n            return null;\n        } \n        \n        return quickSelect(nums, 0, nums.length - 1, k);\n    }\n    \n    private String quickSelect(String[] nums, int start, int end, int k) {\n        int left = start;\n        int right = end;\n        String pivot = nums[left + (right - left) / 2];\n        \n        while (left <= right) {\n            while (left <= right && compareTwoStrings(pivot, nums[left]) < 0) {\n                left++;\n            }\n            \n            while (left <= right && compareTwoStrings(nums[right], pivot) < 0) {\n                right--;\n            }\n            \n            if (left <= right) {\n                String temp = nums[left];\n                nums[left++] = nums[right];\n                nums[right--] = temp;\n            }\n        }\n        \n        if (start + k - 1 <= right) {\n            return quickSelect(nums, start, right, k);\n        } else if (start + k - 1 >= left) {\n            return quickSelect(nums, left, end, k - (left - start));\n        } else {\n            return nums[right + 1];\n        }\n    }\n    \n    private int compareTwoStrings(String s1, String s2) {\n        return s1.length() == s2.length() ? s1.compareTo(s2) : Integer.compare(s1.length(), s2.length());\n    }\n}\n```
['Quickselect', 'Java']