我写了一个函数来反转句子中每个单词的字符,同时保持单词的顺序。我不确定时间的复杂性

时间:2016-09-19 19:02:45

标签: java time-complexity

我写了一个执行此操作的函数,它可以工作;但是,我对我的功能的时间复杂性有点不确定。我觉得它效率很低,但我不确定它是否只是问题的本质。我想象有一种更好的方法可以做到这一点,而不是我这样做。我最初的想法是,这将是O(n ^ 2)时间复杂度,但我认为它可能实际上是最差的,因为我使用的分割功能。有什么更好的方法可以做到这一点?另外,我是否认为这实际上比O(n ^ 2)更差?

public static String wordReverse(String string){

  //Split the string into an array such that each word is an element in the array
  String[] arr = string.split(" ");
  String result = "";

  //Iterate throught the elements in the array
    for(String value : arr){
      String word = "";

  //Reverse the letters of the element, and append them to a  temp string  
    for(int i = value.length(); i > 0; i--){
      word += value.charAt(i-1);
    }

  //Build the result string
      result += word += " ";
  } 

  //Return result string
      return(result);
}

2 个答案:

答案 0 :(得分:0)

O(n ^ 2)你并不差。实际上,你是O(n)。

split()是O(n),因为它传递了一次数组。

你反过来也是O(n),因为它会检查所有字符。

最糟糕的是连接是O(n)。

答案 1 :(得分:0)

您的方法的复杂性是O(n) - 线性时间。时间随着单词和字符的数量线性增加。