對稱數的簡單實現


在百度面試題中看到這樣一個題,可能比較老套了,這里為了學習,自己寫了改寫了個簡單算法。

我們把一個數字倒着讀和原數字相同的數字稱之為對稱數,

(例如1,121,88,8998),不考慮性能,請找出1—10000(n)之間的對稱數,

private List<int> Getsymmetry(int num)
{
  List<int> numList = new List<int>();
  bool bIsEqual = true;
  for (int j = 1; j <= num; j++)
  {
    string number = j.ToString();
    for (int i = 0; i < number.Length / 2; i++)
    {
      if (number[i] != number[number.Length - 1 - i])
      {
        bIsEqual = false;
        break;
      }
        bIsEqual = true;
    }

    if (bIsEqual)
    {
      numList.Add(j);
    }

  }
  return numList;
}

 

這里的numList便保存了我們所有(1到n)的對稱數

 

在網上看到有位大哥這樣寫,很簡單了。

//這個方法是將數的順序反轉,判斷反轉后的數與原來的數是否相等。
public static bool findNumber(int n)
{
  int nValue = 0;
  int temp = n;  
  while (temp > 0)
  {
    nValue = nValue * 10 + temp % 10;
    temp /= 10;
  }
  return (nValue == n);
}

 

算法是個復雜的東東。繼續學習中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM