精华内容
下载资源
问答
  • 设计思想:首先能实现可输出任意字符串,然后定义返回值数据类型,判断递归结束条件方法是在递归函数中通过将字符串转换为数组方法来判断字符串中首尾位置是否相同,以此类推直到整个字符串判断完。 代码: ...


    题目要求:使用递归方式判断某个字串是否是回文( palindrome )回文”是指正着读、反着读都一样的句子。比如“我是谁是我”

    设计思想:首先能实现可输出任意字符串,然后定义返回值数据类型,判断递归结束条件的方法是在递归函数中通过将字符串转换为数组的方法来判断字符串中首尾位置是否相同,以此类推直到整个字符串判断完。

    代码:


    import java.util.Scanner;
    public class digui {
        static  Scanner sc=new Scanner(System.in);
        public static void main(String[] args) {
        System.out.print("请输入一个字符串:");
        String str=sc.next();     //输入一个想要判断的字符串
        boolean mm=find(str,0,str.length());
        System.out.println(mm);
        }
        private static boolean find(String str,int n1,int n2) {
            if(n2<=1)           //判断递归结束条件
                return true;
            else if(str.toCharArray()[n1]==str.toCharArray()[n2-1]){    //判断递归结束条件
                return find(str,n1+1,n2-1);
            }
         return false;

    }

    运行结果:

     

     


    编程总结分析:递归就是把一个问题分解为若干个规模较小、与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决。从程序实现的角度而言,我们需要抽象出一个干净利落的重复的逻辑,以便使用相同的方式解决子问题。

    转载于:https://www.cnblogs.com/--lzx1--/p/11586948.html

    展开全文
  • 如何序列化或序列化二叉树是没有限制,你只需要确保可以将二叉树序列化为一个字符串,并且可以将字符串反序列化为原来树结构。对二进制树进行序列化或序列化方式没有限制,LintCode 将您 serialize 输出...

    502feb43ba43cc8fef8efad8f1693437.png

    设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。

    如何反序列化或序列化二叉树是没有限制的,你只需要确保可以将二叉树序列化为一个字符串,并且可以将字符串反序列化为原来的树结构。

    • 对二进制树进行反序列化或序列化的方式没有限制,LintCode 将您的 serialize 输出作为 deserialize 的输入,它不会检查序列化的结果。

    在线评测地址:LintCode 领扣

    样例 1:

    输入:{3,9,20,#,#,15,7}
    输出:{3,9,20,#,#,15,7}
    解释:
    二叉树 {3,9,20,#,#,15,7},表示如下的树结构:
    	  3
    	 / 
    	9  20
    	  /  
    	 15   7
    它将被序列化为 {3,9,20,#,#,15,7}

    样例 2:

    输入:{1,2,3}
    输出:{1,2,3}
    解释:
    二叉树 {1,2,3},表示如下的树结构:
       1
      / 
     2   3
    它将被序列化为 {1,2,3}

    我们的数据是进行 BFS 遍历得到的。当你测试结果 Wrong Answer 时,你可以作为输入调试你的代码。

    你可以采用其他的方法进行序列化和反序列化。

    【题解】

    考点:

    • 搜索

    题解:

    • serialize()采用bfs,对当前二叉树搜索,遍历vector,将当前节点左右儿子依次存入vector,空节点需要删去。
    • deserialize()首先切割字符串,然后用isLeftChild标记是当前是左右儿子,数字转化为字符串,存为队列首节点的左右儿子。
    class Solution {
    public:
        /**
         * This method will be invoked first, you should design your own algorithm 
         * to serialize a binary tree which denote by a root node to a string which
         * can be easily deserialized by your own "deserialize" method later.
         */
        vector<string> split(const string &str, string delim) {
            vector<string> results;
            int lastIndex = 0, index;
            while ((index = str.find(delim, lastIndex)) != string::npos) {
                results.push_back(str.substr(lastIndex, index - lastIndex));
                lastIndex = index + delim.length();
            }
            if (lastIndex != str.length()) {
                results.push_back(str.substr(lastIndex, str.length() - lastIndex));
            }
            return results;
        }
        string serialize(TreeNode *root) {
            if (root == NULL) {
                return "{}";
            }
            vector<TreeNode *> q;
            q.push_back(root);
            for(int  i = 0; i < q.size(); i++) {
                TreeNode * node = q[i];
                if (node == NULL) {
                    continue;
                }
                q.push_back(node->left);
                q.push_back(node->right);
            }
            while (q[q.size() - 1] == NULL) {
                    q.pop_back();
            }
            string sb="";
            sb += "{";
            sb += to_string(q[0]->val);
            for (int i = 1; i < q.size(); i++) {
                if (q[i] == NULL) {
                    sb += (",#");
                } 
                else {
                    sb += ",";
                    sb += to_string(q[i]->val);
                }
            }
            sb += "}";
            return sb;
        }
        /**
         * This method will be invoked second, the argument data is what exactly
         * you serialized at method "serialize", that means the data is not given by
         * system, it's given by your own serialize method. So the format of data is
         * designed by yourself, and deserialize it here as you serialize it in 
         * "serialize" method.
         */
        TreeNode * deserialize(string &data) {
            // write your code here
            if (data == "{}") return NULL;
            vector<string> vals = split(data.substr(1, data.size() - 2), ",");
            TreeNode *root = new TreeNode(atoi(vals[0].c_str()));
            queue<TreeNode *> Q;
            Q.push(root);
            bool isLeftChild= true;
            for (int i = 1; i < vals.size(); i++) {
                if (vals[i] != "#") {
                    TreeNode *node = new TreeNode(atoi(vals[i].c_str()));
                    if (isLeftChild) Q.front()->left = node;
                    else Q.front()->right = node;
                    Q.push(node);
                }
                if (!isLeftChild) {
                    Q.pop();
                }
                isLeftChild = !isLeftChild;
            }
            return root;
        }
    };

    更多题解参见:九章算法

    展开全文
  • 给一个数字,要你符号不变,但数字反着输出。 其中,最高位不能为0,除非它这个数就是零。 解 甚至不用字符串… 注意处理最高位为0情况即可。 代码 #include<cstdio> #include<cstring> #include<...

    数字反转-反转数字-反转术式(雾)


    题目

    给一个数字,要你符号不变,但数字反着输出。
    其中,最高位不能为0,除非它这个数就是零。


    甚至不用字符串…
    注意处理最高位为0的情况即可。


    代码

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std;
    int n;
    int main(){
    	scanf("%d", &n);
    	if(n < 0) printf("-"), n = -n; //保留符号
    	if(n != 0) while(n % 10 == 0) n /= 10;  //去最高位0
    	do{
    		printf("%d", n%10);  //逐位输出
    		n /= 10;
    	} while(n > 0);
    } 
    
    展开全文
  • 题目描述:给定一个字符串 s,找到 s 中最长回文子串。你可以假设 s 最大长度为 1000。 注:回文是指正着读和反着读都一样 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入:...

    题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
    注:回文是指正着读和反着读都一样

    示例 1:
    输入: "babad"
    输出: "bab"
    注意: "aba" 也是一个有效答案。
    示例 2:
    
    输入: "cbbd"
    输出: "bb"
    

    解析:用动态规划进行回文判断,代码如下:

    class Solution {
    public:
        string longestPalindrome(string s) {
            int n = s.size();
            vector<vector<int>> dp(n, vector<int>(n));
            string res;
            for (int i = 0; i < n; ++i) {
                for (int j = 0; i + j < n; ++j) {
                    int k = i + j;
                    if (i == 0) {
                        dp[j][k] = 1;
                    } else if (i == 1) {
                        dp[j][k] = (s[j] == s[k]);
                    } else {
                        dp[j][k] = (s[j] == s[k] && dp[j + 1][k - 1]);
                    }
                    if (dp[j][k] && i + 1 > res.size()) {
                        res = s.substr(j, i + 1);
                    }
                }
            }
            return res;
        }
    };
    
    展开全文
  • LeetCode——131. 分割回文串[Palindrome Partitioning][中等]——分析及...回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 示例 2: 输入:s = "a" 输出:[
  • 回文

    2017-08-30 15:35:17
    “回文串”是指正着和反着读都一样的字符串。如:”aa”,”bob”,”testset”是回文串,”alice”,”time”都不是回文串。输入 一行一个有小写字母构成的字符串字符串长度不超过10。样例输入 coco输出 如果...
  • 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = “aab” 输出:[[“a”,“a”,“b”],[“aa”,“b”]] 示例 2: 输入:s = “a” 输出:[[“a”]] 提示: 1 <= s.length <= 16 s 仅由小写英文...
  • 判别输入的字符串是否为回文串,是输出"Y",否则输出"N" 代码测试已经在本地vscode通过 #include<iostream> #include<string> using namespace std; #define max 200 //读入一串数字,判断是否是回文串...
  • 文章目录所有题目源代码:[Git地址]...回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 示例 2: 输入:s = "a" 输出:[["a"]] 提示: 1 <
  • 2021-03-07 分割回文

    2021-03-07 21:44:09
    回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = “aab” 输出:[[“a”,“a”,“b”],[“aa”,“b”]] 示例 2: 输入:s = “a” 输出:[[“a”]] 代码: class Solution { private: vector<...
  • 回文串 是正着读和反着读都一样的字符串。 示例1 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 示例2 输入:s = "a" 输出:[["a"]] 提示 1 <= s.length <= 16 s 仅由小写英文字母组成 来源
  • 文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六...回文串 是正着读和反着读都一样的字符串。 五【题目示例】 示例 1: 输入:s = “aab” 输出:[[“a”,“a”,“b”],[“aa
  • 设定字符串为“张三,你好,我是李四” 产生张三密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送是公钥数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...
  • Python 诗意回文

    2020-11-21 15:28:08
    100),代表要判断的字符串的数目。然后N行,每行一个字符串,长度不超过20,只包含英文字母。 Output 对于每个字符串输出一行。如果它是回文串则输出Yes,否则输出No。 下面展示一些 内联代码片。 n = int(input())...
  • Linux-0.11 [内核源代码带中文注释]

    热门讨论 2010-04-02 08:42:45
    在bootsect 程序块后紧根加载setup 模块的代码数据。 ! 注意es 已经设置好了。(在移动代码时es 已经指向目的段地址处0x9000)。 load_setup: ! 68--77 行的用途是利用BIOS 中断INT 0x13 将setup 模块从磁盘第2 ...
  • 最长回文子串1....回文意思就是:正着读反着读都一样,是对称 2.题目示例 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 3.提示 H
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    4.7 我有些解析外部结构的代码,但是它却崩溃了,显示出了“unalignedaccess”(未对齐的访问)的信息。这是什么意思? 作为函数参数的指针 4.8 我有个函数,它应该接受并初始化一个指针:voidf(int*ip){...
  • 7-20 打印九九口诀表 题目链接-7-20 打印九九口诀表 ...puts()函数用来向标准输出设备(屏幕)输出字符串并换行,用法为puts(s); puts("");相当于printf("\n"); 具体操作见代码 附上代码 #include<bits/s...
  • 给出一个字符串,只由‘a’~‘z'组成,字符串是一个首尾相接串。我们要找到一个起点,顺时针或者逆时针读这个串,找到字典序最大读法,如果有多种,输出起点坐标小那个,如果起点坐标一样,输出顺时针那个...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    书中列出了C用户经常问400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道495个C语言问题》结构...
  • 书中列出了C用户经常问400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面主题,并分别给出了解答,而且结合代码示例阐明要点。 本书结构清晰,讲解透彻,是各高校相关...
  • 书中列出了C用户经常问400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面主题,并分别给出了解答,而且结合代码示例阐明要点。  本书结构清晰,讲解透彻,是各高校...
  • 4.7 我有些解析外部结构的代码,但是它却崩溃了,显示出了“unaligned access”(未对齐的访问)的信息。这是什么意思? 47 作为函数参数的指针 47 4.8 我有个函数,它应该接受并初始化一个指针:void f(int *ip)...
  • 4.7 我有些解析外部结构的代码,但是它却崩溃了,显示出了“unalignedaccess”(未对齐的访问)的信息。这是什么意思? 作为函数参数的指针  4.8 我有个函数,它应该接受并初始化一个指针:voidf(int*ip){...
  • ='\n')的代码…… 3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 3.8 为什么表达式printf("%d%d",f1(),f2());先调用了f2?我觉得逗号表达式应该确保从...
  • 题意: 给一个字符串,求出按函数的方法得到的B,B的所有以pi为起点的后缀按字典序排序...所以用Manber和Myers发明的算法,最后反着输出。 O(nlogn) 挑战程序设计竞赛(第一版)378页有讲 我的代码: #define IOS

空空如也

空空如也

1 2 3 4 5
收藏数 94
精华内容 37
关键字:

反着输出字符串的代码