1. /**
    2. * 58.最后一个单词的长度
    3. *
    4. * @param s
    5. * @return
    6. */
    7. public static int lengthOfLastWord(String s) {
    8. int index = s.length() - 1;
    9. int number = 0;
    10. // 去空
    11. while (index >= 0 && s.charAt(index) == ' '){
    12. index -- ;
    13. }
    14. // 查询单词
    15. while (index >= 0 && s.charAt(index) != ' ') {
    16. index--;
    17. number++;
    18. }
    19. return number;
    20. }
    21. /**
    22. * 53.最大子序和 ->动态规划
    23. *
    24. * @param nums
    25. * @return
    26. */
    27. public static int maxSubArray2(int[] nums) {
    28. int pre = 0, maxAns = nums[0];
    29. for (int x : nums) {
    30. pre = Math.max(pre + x, x);
    31. maxAns = Math.max(maxAns, pre);
    32. }
    33. return maxAns;
    34. }
    35. /**
    36. * 53.最大子序和 ->超出时间限制
    37. *
    38. * @param nums
    39. * @return
    40. */
    41. public static int maxSubArray(int[] nums) {
    42. if (null == nums && nums.length <= 0) {
    43. return 0;
    44. } else if (1 == nums.length) {
    45. return nums[0];
    46. } else {
    47. // 至少包含两个元素
    48. int sum = nums[0];
    49. for (int i = 0; i < nums.length; i++) {
    50. for (int j = i; j < nums.length; j++) {
    51. int temp = 0;
    52. if (j == i) {
    53. temp += nums[j];
    54. } else {
    55. for (int m = i; m <= j; m++) {
    56. temp += nums[m];
    57. }
    58. }
    59. if (temp > sum) {
    60. sum = temp;
    61. }
    62. }
    63. }
    64. return sum;
    65. }
    66. }