算法随笔 - 判断一个字符串是否对称

本文探讨了如何实现一个基础算法,用于判断一个字符串是否对称。通过指针操作,可以简洁地检查字符串如"abcdcba"等是否具有对称特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    今天来实现一个基础算法:判断一个字符串是否对称。例如 char str[] = "abcdcba",这样的字符串便是对称的。实现很简单,主要是指针操作即可,下边直接上代码

//头文件
#ifndef __LMSPUBLICLIB_H__
#define __LMSPUBLICLIB_H__

#include <stdio.h>
#include <unistd.h>
#include <string>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <assert.h>
#include <vector>

using namespace std;

#ifndef MAX_PATH
#define MAX_PATH 256
#endif

#ifdef WIN32
#define DIR_SLITTER '\\'
#else
#define DIR_SPLITTER '/'
#endif

namespace LmsPublicLib
{
    bool SmpStr(const char* str);
};

#endif //__LMSPUBLICLIB_H__
//源文件
#include "LmsPublicLib.h"

namespace LmsPublicLib
{
    bool SmpStr(const char* str)
    {
        if(!str)
        {
            return false;
        }

        bool isSmp = false;
        char szBuf[MAX_PATH] = {0};
        strcpy(szBuf, str);
        szBuf[strlen(szBuf)] = '\0';

        char *pHead = szBuf;
        char *pTail = szBuf + strlen(szBuf) -1;

        while( (pTail - pHead) > 0)
        {
            if(*(pHead++) != *(pTail--))
            {
                isSmp = false;
                break;
            }

            isSmp = true;
        }

        return isSmp;
        
    }
}
//main.cpp测试文件
#include "LmsPublicLib.h"
#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
    char str[256] = "abcdcba";

    bool ret = LmsPublicLib::SmpStr(str);
    cout << "SmpStr ret = " << ret << endl;

    return 0;
}

编译执行一下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值