mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
57 lines
2.3 KiB
Markdown
57 lines
2.3 KiB
Markdown
|
|
||
|
[![Arduino CI](https://github.com/RobTillaart/palindrome/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
|
||
|
[![Arduino-lint](https://github.com/RobTillaart/palindrome/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/palindrome/actions/workflows/arduino-lint.yml)
|
||
|
[![JSON check](https://github.com/RobTillaart/palindrome/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/palindrome/actions/workflows/jsoncheck.yml)
|
||
|
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/palindrome/blob/master/LICENSE)
|
||
|
[![GitHub release](https://img.shields.io/github/release/RobTillaart/palindrome.svg?maxAge=3600)](https://github.com/RobTillaart/palindrome/releases)
|
||
|
|
||
|
|
||
|
# Palindrome
|
||
|
|
||
|
Library for palindrome search
|
||
|
|
||
|
|
||
|
## Description
|
||
|
|
||
|
The palindrome library can test if a string is a palindrome and is able to find
|
||
|
the longest palindrome within a character string.
|
||
|
|
||
|
The library is tested with an Arduino UNO, random string of 1600 characters.
|
||
|
|
||
|
|
||
|
## Interface
|
||
|
|
||
|
- **palindrome()** constructor.
|
||
|
- **int findPalindrome(const char \* str, int & position, int & length)** find the longest palindrome in a string. (first occurrence).
|
||
|
- **int findEvenPalindrome(const char \* str, int & position, int & length)** find the longest palindrome in a string with even length. (first occurrence).
|
||
|
- **int findOddPalindrome(const char \* str, int & position, int & length)** find the longest palindrome in a string with odd length. (first occurrence).
|
||
|
- **bool isPalindrome(const char \* str)** checks if a string is a palindrome.
|
||
|
- **int palindromeCount(const char \* str)** returns the count of matching pairs in a string. This is at most the ```length / 2 + 1```.
|
||
|
- **float palindromePercentage(const char \* str)** returns the count as percentage 0.0 .. 100.0 %
|
||
|
|
||
|
|
||
|
## Operation
|
||
|
|
||
|
The examples show the basic working of the functions.
|
||
|
|
||
|
|
||
|
## Questions
|
||
|
|
||
|
- is an empty string a palindrome?
|
||
|
|
||
|
|
||
|
## Future
|
||
|
|
||
|
- update documentation
|
||
|
- should this be a class?
|
||
|
- function names?
|
||
|
- palindromeCount -- symmetryCount?
|
||
|
- palindromePercentage -- symmetryPercentage?
|
||
|
- improve algorithms
|
||
|
- merge odd / even find algorithms?
|
||
|
- investigate Print interface?
|
||
|
- investigate palindrome for numbers - radix 2..16 (36?)
|
||
|
- investigate case (in)sensitive flag?
|
||
|
- investigate ignore spaces flag?
|
||
|
|