2301_79988164 2024-05-03 13:00 采纳率: 33.3%
浏览 4
已结题

求头歌java五子棋题的代码

自己已经测试10多遍都没通过,现在来求各位网友给个完整代码。

img

img

img

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-05-03 13:06
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题描述: 根据给定的输入字符串,判断其是否是回文序列(正反读都一样),若是则返回 true,否则返回 false。 样例: 输入: "racecar" 输出: true 输入: "hello" 输出: false 输入: "A man a plan a canal Panama" 输出: true 解答:
    1. 直接判断法 思路:将字符串正序和反序,然后逐个字符进行比较,如果相同则说明是回文序列。 代码实现: bool isPalindrome(string s) { string str = ""; for (char c : s) { if (isalnum(c)) { str += tolower(c); } } int n = str.size(); for (int i = 0; i < n / 2; ++i) { if (str[i] != str[n - 1 - i]) { return false; } } return true; } 时间复杂度:O(n) 空间复杂度:O(n)
    2. 双指针法 思路:使用两个指针 left 和 right,分别从两端开始遍历字符串,同时判断是否相等。 代码实现: bool isPalindrome(string s) { int n = s.size(); int left = 0, right = n - 1; while (left < right) { while (left < right && !isalnum(s[left])) { ++left; } while (left < right && !isalnum(s[right])) { --right; } if (tolower(s[left]) != tolower(s[right])) { return false; } ++left; --right; } return true; } 时间复杂度:O(n) 空间复杂度:O(1)
    3. STL 做法 思路:使用 STL 的函数 reverse 能够将字符串反转,再通过比较两个字符串是否相等,判断是否为回文序列。 代码实现: bool isPalindrome(string s) { string str = ""; for (char c : s) { if (isalnum(c)) { str += tolower(c); } } string rev_str = str; reverse(rev_str.begin(), rev_str.end()); return str == rev_str; } 时间复杂度:O(n) 空间复杂度:O(n)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日
  • 创建了问题 5月3日