文档章节

翻转字符串和比较两个字符串是否相同

r
 ranjiewen
发布于 2016/11/03 23:51
字数 574
阅读 7
收藏 0

奉献两个小题,练习继续:

//题目描述
//
//请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
//给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
//测试样例:
//"This is nowcoder"
//返回:"redocwon si sihT"

#include<iostream>
#include<string>
using namespace std;
class Reverse {
public:
    string reverseString(string iniString) {
        // write code here
        //string result;
        if(iniString.empty())
        {
            return  iniString;
        }
        //for (int i = iniString.size(); i >0; i--)  //error: control reaches end of non-void function [-Werror,-Wreturn-type]  //没有返回值啊
        //{
        //    cout << iniString[i - 1];
        //}
        //两个数字交换,可以借助第三变量,也可以不借助第三变量;有三种方法,自行总结
        //iniString[i] ^= iniString[j] ^= iniString[i] ^= iniString[j];//交换  
        for (int i = 0; i < iniString.size()/2; i++)
        {
            char temp = iniString[i];
            iniString[i] = iniString[iniString.size() - 1 - i];
            iniString[iniString.size() - 1 - i] = temp;
        }

        return iniString;
    }
};

//题目描述
//
//给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。
//给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。
//测试样例:
//"This is nowcoder", "is This nowcoder"
//返回:true
//"Here you are", "Are you here"
//返回:false

#include<iostream>
using namespace std;
#include<string>
#include<map>
//直接用的sort函数,虽然简洁,复杂度却是O(nlogn);
//正规的做法,应该是hash,用256的元素记录每个字符出现的次数
//再进行比较,扫描一遍,比较一遍,复杂度只要O(n).
class Same {
public:
    bool checkSam(string stringA, string stringB) {
        // write code here
        map<char,int> maps;
        if (stringA.size()!=stringB.size())
        {
            return false;
        }
        for (size_t i = 0; i < stringA.size(); i++)
        {
            maps[stringA[i]]++;
        }
        for (size_t i = 0; i < stringB.size(); i++)
        {
            maps[stringB[i]]--;
        }
        //if (maps.empty())   //为什么没有通过呢???
        //{
        //    return true;
        //}
        //else
        //{
        //    return false;
        //}
        for (size_t i = 0; i < maps.size(); i++) //通过测试
        {
            if (maps[i]!=0)
            {
                return false;
            }
        }
        return true;
    }
};


////想法不错,但是若是AA,BB此题也可通过
//bool checkSam(string stringA, string stringB) {
//    // write code here
//    int lenA = stringA.length();
//    int lenB = stringB.length();
//    if (lenA == lenB){
//        int t = 0;
//        for (int i = 0; i<lenA; i++){
//            t ^= stringA[i];
//            t ^= stringB[i];
//        }
//        if (t == 0){
//            return true;
//        }
//    }
//    return false;
//}

 

本文转载自:http://www.cnblogs.com/ranjiewen/p/5306097.html

r
粉丝 1
博文 203
码字总数 28
作品 0
武汉
程序员
私信 提问
[LeetCode] Shortest Palindrome 最短回文串

Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. Find and return the shortest palindrome you can find by performing this tran......

机器的心脏
2017/12/02
0
0
# LeetCode基础算法-字符串

LeetCode基础算法-字符串 LeetCode 算法 字符串 1. 翻转字符串 编写一个函数,其作用是将输入的字符串反转过来。 解题思路: 双指针法。 low = 0 ,high = 字符串长度-1,low与high逐步逼近。...

24K男
2018/09/07
0
0
Redis源码分析(adlist)

源码版本: 源码位置: adlist.h : 数据结构定义。 adlist.c:函数功能实现。 一、adlist简介 Redis中的链表叫(A generic doubly linked list implementation 一个通用的双端链表实现),和普...

yangbodong22011
2017/11/08
0
0
Python String 操作

增 str.center(width) 返回:长度为width的字符串,将原字符串放入该字符串中心,其它空余位置为空格。str.ljust(width) 返回:长度为width的字符串,将原字符串左对齐放入该字符串,其它空余...

sidiansh
2016/04/18
2
0
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换

去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2)sStr1 = 'strcpy'sStr2 = sStr1sStr1 = 'strcpy2'print sStr2 连接字符串 #strcat(sStr1,sStr2)sStr1 = ......

langtu329
2015/09/30
120
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL8.0.17 - Multi-Valued Indexes 简述

本文主要简单介绍下8.0.17新引入的功能multi-valued index, 顾名思义,索引上对于同一个Primary key, 可以建立多个二级索引项,实际上已经对array类型的基础功能做了支持 (感觉官方未来一定...

阿里云官方博客
23分钟前
3
0
make4.1降级 make-3.81、2错误

在编译 make-3.82 的时候出现如下错误提示 glob/glob.c:xxx: undefined reference to `__alloca'` 修改 /glob/glob.c // #if !defined __alloca && !defined __GNU_LIBRARY__ # ifdef __GNUC......

Domineering
25分钟前
2
0
Rainbond集群的安装和运维的原理

本文将解读Rainbond集群的安装和运维的原理,使用户基本了解Rainbond的安装机制和运维重点,便于用户搭建大型Rainbond集群。 1.Rainbond集群节点概述 1.1 节点分类 属性 类型 说明 manage 管...

好雨云帮
36分钟前
5
0
好程序员大数据学习路线分享UDF函数

1.为什么需要UDF? 1)、因为内部函数没法满足需求。 2)、hive它本身就是一个灵活框架,允许用自定义模块功能,如可以自定义UDF、serde、输入输出等。 2.UDF是什么? UDF:user difine fun...

好程序员官方
38分钟前
4
0
Groovy中 Base64 URL和文件名安全编码

Base64 URL和文件名安全编码 Groovy支持Base64编码很长一段时间。 从Groovy 2.5.0开始,我们还可以使用Base64 URL和Filename Safe编码来使用encodeBase64Url方法对字节数组进行编码。 结果是...

白石
42分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部